Delphi Удалить объект из TObjectList - PullRequest
8 голосов
/ 01 июля 2011

У меня есть список TObject (FileEventObjects := TObjectList.Create(True);), содержащий один или несколько объектов.Объекты должны оставаться в списке, пока они не будут обработаны.(Список объектов существует на время приложения.)

Я не совсем уверен, как удалить обработанный объект из списка.

Будет ли объект «освобожден», если яdo FileEventObjects.Delete(i)

Есть ли ссылки на полезные примеры списков TObjectLists в действии?

С уважением, Питер.

Ответы [ 2 ]

13 голосов
/ 01 июля 2011

Если вы передадите True конструктору TObjectList (по умолчанию он также True), список освобождает любой объект, как только вы удалите его из коллекции, независимо от того, используете ли вы Delete,Remove или Clear.

Кроме этого, TObjectList можно использовать так же, как TList.

5 голосов
/ 02 июля 2011

всегда не забывайте повторять в обратном порядке, например

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

, если при цикле от 0 до -1 при удалении элементов вы получите нарушения доступа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...