Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
Серж   (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;
Скачать: [xml.tar.bz2];

Наверх









Память: 0.58 MB
Время: 0.039 c
14-22357
Виктор Щербаков
2001-11-01 12:40
2002.01.08
Восстановление фотографий


3-21986
Dreamer
2001-12-06 15:43
2002.01.08
Data Field not permitted on open DataSet


1-22068
Андрей21
2001-12-19 10:35
2002.01.08
Многоязыковое приложение


14-22322
Дремучий
2001-11-03 14:10
2002.01.08
Кто возмется сделать? Пригодиться всем.


14-22337
Alexandr
2001-11-05 13:20
2002.01.08
Print Server DP-101(D-Link) и печать из-под DOS





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский