【发布时间】:2018-04-27 23:03:06
【问题描述】:
在@KenWhite 的this autocomplete example 中,当调用TPointerList()[] 时(通过Windows 自动完成界面),Next 函数存在访问冲突。
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 := S_OK
else
Result := S_FALSE;
end;
【问题讨论】:
-
你的问题是什么。你的其余代码在哪里? minimal reproducible example
-
@DavidHeffernan stackoverflow.blog/2018/04/26/…
-
那么,您的问题是什么,minimal reproducible example 在哪里?
-
我在这里也没有看到问题。我只看到一个问题、一个功能和另一个问题的链接。我也看不出大卫的评论有什么敌意。
-
@Henry 我阅读了您链接的整个博客文章,但我仍然不知道如何处理网站上发布的答案的错误报告。
标签: delphi autocomplete delphi-10.1-berlin