gpt4 book ai didi

delphi - 从TStringsList读取Delphi访问冲突

转载 作者:行者123 更新时间:2023-12-03 19:44:52 30 4
gpt4 key购买 nike

我得到以下

Access violation at address 00404340 in module 'test.exe'. Read of address FFFFFFD5

用下面的代码

var
List: TStrings;


在创建部分中:
List:= TStringList.Create;

添加到列表:
Result := List.AddObject('hi', aCreatedObject);
MessageDlg(FunctionHookList.Objects[Result].ClassName, mtInformation, [mbOK], 0);

消息对话框显示正确的类名

但是后来我做的时候

i := list.IndexOf('hi');
if i >= 0 then
if list.Objects[i] <> nil then
if assigned(list.Objects[i]) then
begin
tmp := list.Objects[i];
if tmp <> nil then
MessageDlg(tmp.ClassName, mtInformation, [mbOK], 0); //*******
end;


我在 //*******行上收到上面的访问冲突

我知道那里有一些重复的代码,但是我试图检查“所有内容”

最佳答案

请注意,Assigned除nil外不检查任何其他内容。如果将对象放在字符串列表中,将其释放,然后检查字符串列表,它将告诉您仍然存在对象。检查此示例:

var
o: TObject;
begin
o := TObject(42 {just a random number});
if Assigned(o) then
ShowMessage(o.ClassName);
end;


因此,除已分配的支票外,几乎所有支票均有效。它仅检查对象是否包含除nil以外的任何其他值,与在上一行执行的检查基本上相同。

关于delphi - 从TStringsList读取Delphi访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4211900/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com