小编Hen*_*run的帖子

Delphi,在TPointerlist()中编辑tenumstring中的自动完成访问冲突

在@KenWhite的自动完成示例中,Next函数在TPointerList()[]调用时具有访问冲突(通过Windows自动完成界面).

D10.1u2,Win10.64

function TEnumString.Next(celt: Integer; out elt;
   pceltFetched: PLongint): HResult;
var
 I: Integer;
wStr: WideString;
begin
 I := 0;
 while (I < celt) and (FCurrIndex < FStrings.Count) do
   begin
     wStr := FStrings[FCurrIndex];
     TPointerList(elt)[1] := PWideChar('abcd');  //access violation
     TPointerList(elt)[1] := CoTaskMemAlloc(8);  //access violation
     TPointerList(elt)[I] := CoTaskMemAlloc(2 * (Length(wStr) + 1)); //access violation
     StringToWideChar(wStr, TPointerList(elt)[I], 2 * (Length(wStr) + 1));
     Inc(I);
     Inc(FCurrIndex);
  end;
 if pceltFetched <> nil then
  pceltFetched^ := I;
 if I = celt then
 Result := …
Run Code Online (Sandbox Code Playgroud)

delphi autocomplete delphi-10.1-berlin

-1
推荐指数
1
解决办法
130
查看次数

标签 统计

autocomplete ×1

delphi ×1

delphi-10.1-berlin ×1