我有一个包含一个或多个对象的TObject列表(FileEventObjects := TObjectList.Create(True);
)。对象需要保留在列表中,直到它们被处理。 (对象列表在应用程序的持续时间内存在。)
我不完全确定如何从列表中删除已处理的对象。
如果FileEventObjects.Delete(i)
是否有任何有用的TObjectLists实例的链接?
问候,彼得。
答案 0 :(得分:13)
如果您将True
传递给TObjectList
构造函数(默认情况下它也是True
),则无论是否将对象从集合中移除,该列表都会释放任何对象您使用Delete
,Remove
或Clear
。
除此之外,TObjectList
可以像TList
一样使用。
答案 1 :(得分:5)
始终记得像
一样向后循环for i := Pred(objectlist.Count) downto 0 do
begin
objectlist.items[i].process;
objectlist.delete(i);
end;
如果从0循环到计数-1,同时删除项目将导致访问违规