| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Не дать удалить элемент из TObjectList |
| Автор: kami 8.5.2010, 00:57 |
| Имеется наследник TObjectList с несколькими (от 1 до 50) объектами в нем. Его планируется использовать в нескольких проектах. Один из элементов этого списка (его индекс может варьироваться) удалять/заменять нельзя под страхом смертной казни (а в процессе разработки я могу забыть про это и нарваться на грабли, посему хотелось бы сразу избежать их). Собственно - вопрос: как бы правильно (и красиво) обыграть это? Простое перекрытие TList.Delete(index) результата не даст (т.к. вызывается в том числе и в деструкторе TList через SetCount(0)), а есть еще: TList.Put; TList.SetCount(0), в котором отвратительная строчка FCount := NewCount; TList.Extract, в котором сперва объект исключается из списка, а потом вызывается TList.Delete(i); Assign и т.п (дальше просто не стал смотреть). Заранее спасибо за участие. |
| Автор: bems 12.5.2010, 04:04 |
| Сложно так вот в общем. А можно ли чтобы изменялся его индекс в результате удаление предыдущих? Чем не подходит выриант с перекрытием деструктора? Почему бы не использовать Assert в местах, где наличие этого объекта необходимо? |
| Автор: Rennigth 12.5.2010, 05:07 | ||
kami, А как тебе такой вариант, особо не тестировал но...
|
| Автор: Демо 12.5.2010, 12:56 |
| Я бы написал свой класс для такого. Если всё же хочется использовать наследника, то проще всего вынести нужный элемент в поле класса и работать с ним специальными методами. |
| Автор: bems 13.5.2010, 00:45 |
| Если код, использующий список под твоим контролем, то этого достаточно, чтобы ты не пропустил момент, когда накосячил. |