Вниз
Скачать: CL | DM;

Удаление объекта   Найти похожие ветки 

← →
Серж   (2001-12-18 19:18) [0]

Удаляю объект (делаю Free)
Как проверить что объект удален (проверяю на nil - говорит,
что указатель определен). Как быть ???


← →
Anatoly Podgoretsky ©   (2001-12-18 19:29) [1]

Ну присвой ему nil после удаления.
Только зачем так делать, на лицо повторное использование, лучше писать так что бы не было в этом нужды.


← →
nil ©   (2001-12-18 19:36) [2]

FreeAndNil(Object);


← →
Серж   (2001-12-18 19:41) [3]

Ну это не совсем "повторное использование"
Проблема в следующем:
Я делаю дизайнер отчетов. Пользователь может добавлять к репорту разные элементы (bandы, lablы и т.д.). То что лежит на отчете пишется в tlist
Конечно, можно удалять и добавлять компоненты.
Проблема появилась, когда удаляется банд. Делаю ему free - он удаляется и удаляет свои дочерние объекты.
Мне их надо удалить из lista. Поэтому и возник вопрос. Я хотел при удалении банда проверить какие объекты удалились вместе с ним и удалить их из этого списка.
А в других случаях я и присваивал nil.
Должен же быть какой-нибудь способ???


← →
Юрий Зотов ©   (2001-12-18 19:43) [4]

А зачем вообще проверять? Если Free было вызвано и при этом исключений не возникло, значит объект удален и никакие проверки уже не нужны.

Похоже, Anatoly Podgoretsky прав - логика кода построена не лучшим образом. Советую обратить на это внимание, поскольку очень часто такие вещи являются причиной скрытых и труднообнаруживаемых ошибок.


← →
Серж   (2001-12-18 19:48) [5]

Ну ладно!! Спасибо всем!
Если даже Ю.Зотов не знает способа - значит буду пытаться решить проблему другим и, похоже, более длинным путем :((
Еще раз спасибо за внимание.


← →
Юрий Зотов ©   (2001-12-18 19:52) [6]

Надо же, разница в 2 секунды...

Теперь задача понятна. Один из способов такой. Породите свой менеджер от TComponent, а Ваш TList вставьте в него, как поле. Разница в том, что при вставке любого компонента в отчет этот TComponent может вызвать его метод FreeNotification и поэтому автоматически будет получать все уведомления об удалении. Остается только заместить его метод Notification, а в нем уже очищать ссылки в TList.


← →
Серж   (2001-12-18 19:57) [7]

>Юрий Зотов
Хитро! Ладно, завтра попробую! Спасибо!


← →
Anatoly Podgoretsky ©   (2001-12-18 20:25) [8]

В принципе не важно как сделать, важно что бы любой объект добавлялся и удалялся сам из списка. В этом случае проблема уйдет на корню.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-22223
ANDREY196
2001-12-16 19:30
2002.01.08
Как создать ANI курсор Живой указатель


14-22317
Tosov
2001-10-31 23:58
2002.01.08
Delphi 6


1-22022
victor
2001-12-18 08:05
2002.01.08
Нужен Label для отображения формул


1-22007
creepster
2001-12-17 18:09
2002.01.08
screen saver


6-22285
Vital
2001-10-09 12:34
2002.01.08
Проблема выбора




   Наверх