Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.04;
Скачать: CL | DM;

Вниз

Вызов Release у формы   Найти похожие ветки 

 
gosha73   (2008-08-13 13:05) [0]

Приветствую.
Задался следующим вопросом:
При закрытии своей проги начинаю уничтожать форму, которую сам создал динамически и без владельца. В деструкторе главной формы вызываю:
if Assigned(FFormTemp) then FFormTemp.Release;
Но под отладчиком я не вижу чтобы вызывался деструктор у класса формы FFormTemp. Т.е. такое ощущение, что приложение уничтожается раньше, чем успеет отработать деструктор у FFormTemp. Получается нет смысла вызывать FFormTemp.Release в деструкторе главной формы, т.к. приложение завершится раньше, чем отработает очередь сообщений формы FFormTemp. Действительно ли это так? Или в данном случае все-таки надо вызывать FFormTemp.Free, не смотря на то, что для форм такой вызов не рекомендуется?


 
{RASkov} ©   (2008-08-13 13:34) [1]

Когда приложение закрывается и в следствии чего будет закрыто - виндовс сама все удалит из памяти, касаемо закрывшегося приложения.
Т.е. если память пытаешься освободить на закрытие программы, то это никчемное занятие.
А вообще - освобождение за собой памяти - это есть хорошо.


 
{RASkov} ©   (2008-08-13 13:35) [2]

А Релиз может и не дойти :) Там же постмессаге...)


 
Anatoly Podgoretsky ©   (2008-08-13 13:42) [3]

Растиражировали этот Release - теперь мучаются.


 
Германн ©   (2008-08-13 13:51) [4]


> Растиражировали этот Release - теперь мучаются.

Так тиражировали для других случаев, а пользуют где попало. Нет бы справку почитать.

> Или в данном случае все-таки надо вызывать FFormTemp.Free,
>  не смотря на то, что для форм такой вызов не рекомендуется?
>

Кем не рекомендуется?


 
Сергей М. ©   (2008-08-13 13:52) [5]


> все-таки надо вызывать FFormTemp.Free, не смотря на то,
> что для форм такой вызов не рекомендуется?


Кем не рекомендуется-то ?

И кем, напротив, рекомендуется relese, коль скоро ты решил использовать именно его ?


 
gosha73   (2008-08-13 14:16) [6]

Ну как и многие я смотрю временами в help, там есть такая строчка:
Any event handlers for the form or its children should use Release instead of Free (Delphi) or delete (C++).


 
gosha73   (2008-08-13 14:18) [7]

Возможно я недопонял сам хелп конечно. Поясните тогда пожалуйста.


 
Palladin ©   (2008-08-13 14:22) [8]

ключевая фраза:Any event handlers for the form or its children


 
Сергей М. ©   (2008-08-13 14:26) [9]

Имеется ввиду, что в обработчиках событий формы или контролов на этой форме для уничтожения этой формы следует использовать метод Release (aka defered free = отложенное освобождение) вместо Free во избежание возникновения исключительной ситуации.
Для уничтожения других контролов и форм, т.е. не имеющих никакого отношения к этой форме или ее контролам, допустимо и рекомендуется вызывать метод Free.


 
Сергей М. ©   (2008-08-13 14:27) [10]


> gosha73


the form - эта форма

Подучи английский - это явно не помешает.


 
gosha73   (2008-08-13 15:07) [11]


> Сергей М.

Спасибо, моя невнимательность меня подвела. Просто при вызове Free у меня вылетало AV по нулевому адресу, подумал что наверно надо везде юзать Release вместо Free, а оказалось все проще, у меня просто дважды эта форма уничтожалась, слишком много кода в деструкторе было - не заметил. Всем спасибо.


 
Amoeba ©   (2008-08-13 15:32) [12]


> создал динамически и без владельца

Если бы создал с владельцем, то и вопрос не пришлось задавать. Какая цель преследовалась?



Страницы: 1 вся ветка

Текущий архив: 2009.10.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1248944979
_drug_
2009-07-30 13:09
2009.10.04
построение приложения баз данных


15-1248771986
Kolan
2009-07-28 13:06
2009.10.04
Ошибка F2438 UCS-4 text encoding not supported.


2-1248942126
KK
2009-07-30 12:22
2009.10.04
Строку в список


15-1249459183
@!!ex
2009-08-05 11:59
2009.10.04
В чем смысл спама о выигрышах?


15-1249245002
Юрий
2009-08-03 00:30
2009.10.04
С днем рождения ! 3 августа 2009 понедельник