Главная страница
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.015 c
15-1249072202
Юрий
2009-08-01 00:30
2009.10.04
С днем рождения ! 1 августа 2009 суббота


2-1249040793
Zheksonz
2009-07-31 15:46
2009.10.04
Выгружаю процесс, аиконкапроболжает висеть на TaskBar


1-1218115742
Lacmus
2008-08-07 17:29
2009.10.04
Преобразование WideString в String


3-1227770092
greg123
2008-11-27 10:14
2009.10.04
Как задать колонку, по кот. нужно сортировать результат в EhGrid


15-1249158604
Юрий
2009-08-02 00:30
2009.10.04
С днем рождения ! 2 августа 2009 воскресенье