Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.10.04;
Скачать: [xml.tar.bz2];

Вниз

Вызов 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
1-1218291861
lordalex
2008-08-09 18:24
2009.10.04
Не отображает иврит


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


15-1249072202
Юрий
2009-08-01 00:30
2009.10.04
С днем рождения ! 1 августа 2009 суббота


2-1249321361
linox
2009-08-03 21:42
2009.10.04
регистр при фильтрации


2-1248519920
Pirog
2009-07-25 15:05
2009.10.04
Вариантный массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский