9

我有一个FileEventObjects := TObjectList.Create(True);包含一个或多个对象的 TObject 列表 ( )。对象需要保留在列表中,直到它们被处理。(对象列表在应用程序期间存在。)

我不完全确定如何从列表中删除已处理的对象。

如果我这样做,对象会被“释放”吗FileEventObjects.Delete(i)

是否有任何有用的 TObjectLists 示例的链接?

问候,彼得。

4

2 回答 2

14

如果您传递TrueTObjectList构造函数(True默认情况下也是如此),则列表会在您从集合中删除任何对象后立即释放它,无论您使用Delete,Remove还是Clear.

除此之外,TObjectList可以像TList.

于 2011-07-01T12:15:17.403 回答
5

永远记得像往回循环一样

for i := Pred(objectlist.Count) downto 0 do
begin
  objectlist.items[i].process;
  objectlist.delete(i);
end;

如果您在删除项目时从 0 循环到计数 -1,您将遇到访问冲突

于 2011-07-01T22:49:17.840 回答