Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Free [D5, Win2k]


Swamp ©   (2002-09-23 17:27:00) 

Как узнать, был ли выполнен метод Free или Destroy у объекта, и в общем случае существует ли объект. Проверка на nil естно не подходит.


still swamp   (2002-09-24 09:31:00) [1]

В общем и целом... способа нет, однако последний предложенный в моем случае разрешил вопрос.


Старый Паскалист   (2002-09-23 18:07:00) [2]

Да можно и проще:

ТУправляющаяФорма = class(...)
procedure ОчиститьСвязныеУказатели;
end;

ТРодительскаяФорма.РодительскаяФормаDestroy; //OnDestroy;
begin
if FУправляющаяФорма <> nil then
FУправляющаяФорма.ОчиститьСвязныеУказатели;
...
end;


still swamp   (2002-09-23 17:55:00) [3]

ой да.... это закат солнца вручную.
легче в try обратиться...
коряво. но что делать.


Старый Паскалист   (2002-09-23 17:52:00) [4]

Пусть при закрытии родительская форма посылает
специальное сообщение управляющей, а та по нему
обнуляет всех связных указателей


still swamp   (2002-09-23 17:47:00) [5]

Достаточно простая ситуация. Формой управляет внешняя форма. Туда переданы некие указатели для связи. Родительская закрыта, управляющая нет, так как она нужна. Вот и проблемка.


Старый Паскалист   (2002-09-23 17:44:00) [6]

Никак ты в общем случае не проверишь.
Надо проектировать так, чтобы этого не происходило.

В компонентах, например, специально для этих целей придуман механизм оповещения (виртуальный метод Notification). Возможно, тебе стоит копать в этом направлении.


qube   (2002-09-23 17:43:00) [7]

Нулить компоненты? Это как и зачем?
Если форма освобождается при закрытии, то не существует уже сама форма.

И откуда может вернуться указатель убитого объекта?


still swamp   (2002-09-23 17:37:00) [8]

Ну да - понятно, а если скажем я закрываю окошко, а на нем несколько компонент, и нет ничего приятнее как их все нулить. Или еще веселее... ко мне вернулся указатель, бог знает когда зафришенного объекта.


MBo   (2002-09-23 17:31:00) [9]

надо при Free и обNil-ять.
А проще FreeAndNil делать


Наверх

Титульная страница Поиск, карта сайта Написать письмо