Delphi从TObjectList中删除一个对象

Pie*_*Wyk 8 delphi tobjectlist

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

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

如果我这样做,对象是否会被"释放" FileEventObjects.Delete(i)

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

问候,彼得.

jpf*_*ius 13

如果您传递TrueTObjectList构造函数(True默认情况下也是这样),则无论您是否使用Delete,该列表都会从集合中删除任何对象,Remove或者Clear.

除此之外,TObjectList可以像使用一样TList.

  • 您可以使用`.Extract()`从列表中删除对象而不释放它. (15认同)

Mik*_*lor 5

永远记得像

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

如果您从0循环到-1,同时删除项目,则会出现访问冲突

  • 是的,我昨天发现很困难!! (2认同)