Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.08;
Скачать: 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 вся ветка

Текущий архив: 2002.01.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
14-22331
vasco
2001-10-26 17:57
2002.01.08
А много ли левшей среди программистов?


7-22444
VS
2001-09-27 07:14
2002.01.08
Как скопировать самого себя, если программа запущена


6-22291
Leviathan
2001-10-09 22:02
2002.01.08
Вопрос по компоненту NMFTP


7-22422
savva
2001-09-19 12:42
2002.01.08
Интересная задачка... Как можно работая с сотовым через cом порт заставить его


1-22048
-==Yurka==-
2001-12-18 18:50
2002.01.08
Проблема с Memo