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