![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление из Tlist
Ezorcist © (2007-05-30 17:11:00)если создать item в списке:
list.add(@obj);
то как ее потм удалить? можно перебрать все элементы списка и найти тот который =@obj, или может быть можно как-то запомнить эту item которая была создана? (или есть способ еще проще?) :-)
ЮЮ (2007-05-31 03:29:00) [1]Delete в списке всё равно удаляет по индексу, а не по ссылке по итем, так что наличие ссылки не спасёт.
Как решение:
1) вместо TList - TObjectList, созданный Create( true)
2) нкаких но когда tobj понимает, что ему пора удаляться, удалять объект должен кто-то другой, причем именно из списка, экземпляр при этом будет уничтожен TObjectList-ом.
Ezorcist (2007-05-30 20:05:00) [2]есть группа tobj если они все в листе то к ним удобно обращаться, но когда tobj понимает, что ему пора удаляться, он должен удалить и себя из этого списка. так вот если бы можно было дать tobj как поле ссылку на элемент списка, то тогда он быстро этот элемент удалил.
можно и через IndexOf но тогда при быстром появлении и удалении tobj -ов начинает тормозить.
Anatoly Podgoretsky (2007-05-30 19:33:00) [3]> Ezorcist (30.05.2007 18:59:04) [4]
Зачем тогда нужен TList вообще, запоминай сам указатель
Ezorcist (2007-05-30 18:59:00) [4]а можно быстрее?) просто никак не пойму можно ли запомниться итэм? а потом что-то типа PointerToItem.Delete; ? хотя итем и так поинтер?
Плохиш (2007-05-30 18:43:00) [5]
> Ezorcist (30.05.07 18:41) [2]
Это и есть перебор.
Ezorcist (2007-05-30 18:41:00) [6]Это вернет номер итэма по содержимому? интересно как это реализовано, и не будет ли работать так же долго как перебор?
clickmaker (2007-05-30 17:12:00) [7]IndexOf()?