【发布时间】:2009-09-08 13:43:08
【问题描述】:
procedure FreeListObjects( l : TStrings);
var i : integer;
BEGIN
FOR i := 0 TO l.Count -1 DO BEGIN
l.Objects[i].Free;
l.Objects[i] := NIL;
END;
end;
PROCEDURE StringListAdd;
VAR i : INTEGER; Code : LONGWORD;
BEGIN
l := Classes.TstringLIST.CREATE;
FOR i := 0 TO 4 DO BEGIN
Code := i ;
l.AddObject('', TObject(code));
END;
Code := LONGWORD(l.Objects[2]);
FreeListObjects(l);
l.Free;
END;
当我使用l.OwnsObjects := TRUE 没有 FreeListObjects(l) 时,会发生错误。
谁来释放这个字符串列表的对象?
【问题讨论】:
-
Mounir...你有什么问题?
-
你有什么错误信息?
-
你知道,当一个全新的、不习惯我们的风格和惯例的人出现并提出一个问题并且它的格式不够正确或描述性不够时,我们应该欢迎他们并帮助他们找到一个答案,而不是联合起来反对他们,让他们淹没在反对票和关闭请求中。你们真丢脸。
-
@Mason - 我不同意;人们正在向 OP 询问更多信息。如果提供了该信息,通常会很快看到问题重新打开。正确回答一个不完整的问题非常困难。
-
@Marc:我没有看到任何不完整的问题。我打开 Delphi,将他的代码粘贴进去,添加对 StringListAdd 的调用,点击 Run,然后立即出现异常。正如他最后几行所暗示的那样,问题在于释放对象。这里没有不完整的信息;只是人们联合起来对付一个问题措辞非常糟糕的新手,这对 StackOverflow 以及特别是关于 SO 的 Delphi 社区产生了相当负面的印象。
标签: delphi tstringlist