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

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

Как определить, что объект уже не жив... [D6, Win2k, WinXP]


Страницы:   1 2 3

aleshap ©   (2006-01-16 10:45:00) 

Добрый день!
Думаю, что вопрос простой... только не могу найти на него ответ...

Ситуация такова
var F:TForm

begin
F:=myForm;
...  
при некоторый условиях происходит myForm.Free
...
Как определить, что F - это уже несуществующий  объект?
end;

Заранее Спасибо!!!


Fay   (2006-01-16 11:46:00) [21]

2 evvcom ©   (16.01.06 11:40) [34]
Не парьтесь! Из вопроса и из [20] не следует, что объект - наследник TForm.
Скажу больше, это просто указатель куда-то, поэтому говорить о Screen.Forms не имеет смысла.


Ega23   (2006-01-16 11:45:00) [22]

Везде после TCustomForm.Free ставить TCustomForm:=nil.
Ну и потом проверять, типа if Assigned(F) then ...


evvcom   (2006-01-16 11:40:00) [23]


> Я считаю, что ответ [19] на первоначальный вопрос правилен.
>  Аргументов в пользу обратного я не услышал.

Пожалуйста, аргумент. В частном случае это сойдет, а в общем нет. Этот способ не является универсальным гарантированным способом. Например, я такой извращенец оверрайдил CreateNew и извратился и сделал так, что   Screen.AddForm(Self); не отработала. Ну захотелось мне, чтобы моя форма вдруг стала не видимой для тех, кто их ищет через Screen.
Так что я настаиваю на пузыре!


aleshap   (2006-01-16 11:31:00) [24]

Fay ©   (16.01.06 11:27) [32]  да вы правы


Fay   (2006-01-16 11:27:00) [25]

2 begin...end ©   (16.01.06 11:22) [30]
Я понял, это был ответ на вопрос "Как определить, что F - это уже несуществующий  объект?".
Всё-таки сложно иногда без (не)определённых артиклей.


evvcom   (2006-01-16 11:22:00) [26]


> evvcom ©   (16.01.06 11:20) [28]

Забыл дописать "но лучше так все равно не делать", увлекся.


begin...end   (2006-01-16 11:22:00) [27]

> Fay ©   (16.01.06 11:14) [22]

Я считаю, что ответ [19] на первоначальный вопрос правилен. Аргументов в пользу обратного я не услышал. Ваши фантазии относительно моей жены (которой у меня нет, и, скорее всего, не будет) меня не интересуют.


aleshap   (2006-01-16 11:21:00) [28]

по крайней мере во время нашей беседы на нашел уже один выход их сложившейся ситуации... просто не хочется к нему прибегать... хочеться проще и красивее


evvcom   (2006-01-16 11:20:00) [29]


> Вопрос не сводиться строго к объектам типа  TForm.

Конечно, можно попробовать обернуть в try попытку доступа к "объекту" типа такого:
try
 if F is TMyForm then
   TMyForm(F)...
except
 ShowMessage('Пошел на фиг, меня уже нет!');
end;


Fay   (2006-01-16 11:19:00) [30]

2 aleshap   (16.01.06 11:16) [24]
Я не говорил, что "какой-то" мужик - это Вы.
LOL


aleshap   (2006-01-16 11:19:00) [31]

в конце концов по имени....паспорту...
вы Fay при сылке на [1] видимо фантазируете


Плохиш   (2006-01-16 11:18:00) [32]


> Fay ©   (16.01.06 11:05) [15]
> 2 Плохиш ©   (16.01.06 10:56) [7]
> Только что смотрел - ничего там не лежит!

А где ты у программиста совесть нашёл? ;-)

> Fay ©   (16.01.06 11:15) [23]
> 2 aleshap   (16.01.06 11:10) [21]
> См. [1]

Stack overflow


aleshap   (2006-01-16 11:16:00) [33]

Да но... по визуальной внешности я отлично пойму, что он это не я...


Fay   (2006-01-16 11:15:00) [34]

2 aleshap   (16.01.06 11:10) [21]
См. [1]


Fay   (2006-01-16 11:14:00) [35]

2 begin...end ©   (16.01.06 11:07) [19]
> И что?
Представьте, что Вы приходите домой, а Ваша жена с каким-то мужиком. Он - не Вы, но существующий. Аргументы вида "И что?" примите?


evvcom   (2006-01-16 11:12:00) [36]


> И что? Если так случится, то F (см. вопрос) -- это существующая
> форма, пусть и другая.

Да, тоже согласен. Автор этого не сказал, но скорее всего он ожидает в этом F все же тот первоначальный myForm, ведь ничего другого он туда не клал!


aleshap   (2006-01-16 11:10:00) [37]

Вопрос не сводиться строго к объектам типа  TForm.


begin...end   (2006-01-16 11:07:00) [38]

> evvcom ©   (16.01.06 10:56) [8]

> Конечно можно, но все-таки существует вероятность (маленькая
> правда очень), что этот адрес будет занимать, например,
> уже MyForm2.

И что? Если так случится, то F (см. вопрос) -- это существующая форма, пусть и другая.


sniknik   (2006-01-16 11:07:00) [39]

для формы можно просто на событие onDestroy написать f:= nil; и проверять на него.


aleshap   (2006-01-16 11:07:00) [40]

извините отпечатка: раздел


Страницы:   1 2 3

Наверх

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