Форум: "Основная";
Текущий архив: 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