casa

Forum: "Principale";
Archivio attuale: 2002.01.08;
Scarica: [xml.tar.bz2];
giù

Удаление объекта Trova rami simili


Серж   (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.
Должен же быть какой-нибудь способ???



Yuri Zotov (2001-12-18 19:43) [4]

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

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




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

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



Yuri Zotov (2001-12-18 19:52) [6]

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

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



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

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



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

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




Pagine: 1 tutto il ramo

Forum: "Principale";
Archivio attuale: 2002.01.08;
Scarica: [xml.tar.bz2];

al piano di sopra

Top.Mail.Ru Yandeks.Metrika













Memoria: 0.78 MB
Ora: 0.129 c
7-22425
Andrey
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
Функция для сканера


1-22204
Dmitriy (nuovo)
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
il codice non crea più `file 273 in win2000


3-21981
Termik
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
Informazioni sui campi chiave e IDENTITY


3-21972
wetnose
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
FIB + + generatori


14-22391
Serg5
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
Кому не лень, зайдите на http://forum.ru-board.com/ , он правда висит, или IP фильтрация, меня не пускают.





afrikaans albanese Arabic armeno Azero basco bielorusso Bulgarian catalano Cinese (semplificato) Cinese (tradizionale) croato Ceco danese Dutch Inglese estone filippina Finnish Francese
galiziano georgiano Tedesco greco Creolo haitiano ebraico hindi ungherese islandese Indonesian irlandese Italiano Giapponese Korean lettone lituano macedone Malay maltese Norwegian
persiano polacco Portoghese rumeno Russian serbo Slovak sloveno Spagnolo swahili Swedish Thai turco ucraino Urdu vietnamita gallese yiddish bengalese bosniaco
Cebuano esperanto Gujarati Hausa Hmong Igbo giavanese kannada khmer lao latino maori marathi mongolo nepali punjabi somalo tamil telugu Yoruba
zulù
Английский Francese tedesco italiano portoghese russo spagnolo