Delphi 从 TObjectList 中删除一个对象

发布于 2024-11-18 13:27:33 字数 284 浏览 3 评论 0原文

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

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

如果我执行 FileEventObjects.Delete(i) ,该对象会被“释放”吗

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

问候,彼得。

I have a TObject list (FileEventObjects := TObjectList.Create(True);) containing one or more objects. The objects need to stay in the list until they are processed. (The object list exists for the duration of the application.)

I'm not entirely sure how to remove a processed object from the list.

Will the object be 'freed' if I do FileEventObjects.Delete(i)

Are there any links to useful examples of TObjectLists in action?

Regards, Pieter.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱要勇敢去追 2024-11-25 13:27:33

如果将 True 传递给 TObjectList 构造函数(默认情况下也是 True),则一旦您从列表中删除任何对象,列表就会释放该对象。集合,无论您使用DeleteRemove还是Clear

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

If you pass True to the TObjectList constructor (it is also True by default), the list frees any object as soon as you remove it from the collection, no matter if you use Delete, Remove or Clear.

Apart from this, TObjectList can be used just like TList.

何时共饮酒 2024-11-25 13:27:33

始终记住向后循环,就像

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

从 0 循环到计数 -1 一样,同时删除项目,您将遇到访问冲突

always remember to loop backwards like

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

if you loop from 0 to count -1 whilst removing items you will get access violations

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文