SQLRU.net
Разработка приложений баз данных

Начало » Программирование » Delphi » TForm.HandleAllocated (Можно ли использовать для проверки существования формы?)
TForm.HandleAllocated [сообщение #3868] Fri, 01 December 2023 09:56 Переход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 56
Зарегистрирован: June 2022
Member
В разных источниках рекомендуется TForm.HandleAllocated для проверки существования формы.
По факту код :

if MyForm.HandleAllocated then
  MyForm.Free;
вызывает исключение Access Violation.

if MyForm <> nil then
тоже самое

Какой самый надежный способ проверить существование формы прежде чем вызывать Form.Free; ?

Re: TForm.HandleAllocated [сообщение #3870 является ответом на сообщение #3868] Fri, 01 December 2023 12:47 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
FreeAndNil(MyForm);
Re: TForm.HandleAllocated [сообщение #3871 является ответом на сообщение #3870] Fri, 01 December 2023 13:05 Переход к предыдущему сообщениюПереход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 56
Зарегистрирован: June 2022
Member
МП писал(а) Fri, 01 December 2023 12:47
FreeAndNil(MyForm);
Спасибо, попробую!
З.Ы.
Вот еще в тему:
Почему всегда нужно использовать FreeAndNil вместо Free
Re: TForm.HandleAllocated [сообщение #3878 является ответом на сообщение #3868] Sat, 02 December 2023 15:47 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 411
Зарегистрирован: August 2022
Senior Member
sg729 писал(а) Fri, 01 December 2023 07:56
В разных источниках рекомендуется TForm.HandleAllocated для проверки существования формы.
Не читай заборы по утрам. HandleAllocated свидетельствует о существовании окна формы, а не TForm как такового.
Re: TForm.HandleAllocated [сообщение #3881 является ответом на сообщение #3878] Mon, 04 December 2023 07:55 Переход к предыдущему сообщениюПереход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 56
Зарегистрирован: June 2022
Member
SD писал(а) Sat, 02 December 2023 15:47
sg729 писал(а) Fri, 01 December 2023 07:56
В разных источниках рекомендуется TForm.HandleAllocated для проверки существования формы.
HandleAllocated свидетельствует о существовании окна формы, а не TForm как такового.
Т.е. если, например, при HandleAllocated = True обратиться к какому-либо свойству формы, может возникнуть Access Violation ?
Re: TForm.HandleAllocated [сообщение #3888 является ответом на сообщение #3881] Tue, 05 December 2023 15:34 Переход к предыдущему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 411
Зарегистрирован: August 2022
Senior Member
Да. Если в том мусоре в памяти, на который указывает твой указатель, место хэндла случайно оказалось не нулём.
Предыдущая тема: Динамический SQL запрос
Следующая тема: Unit1 in 'Unit1.pas'
Переход к форуму:
  


Текущее время: Thu Nov 21 18:12:45 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00729 секунд