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

Вниз

И всет-таки Release или Free для формы?   Найти похожие ветки 

 
gosha73   (2007-03-02 17:26) [0]

Привет друзья.
Здалася таким вот вопросом поскольку испытал на себе проблемы при использовании метода Free для формы. Метод Release работает замечательно, никаких AV и проблем.
Но, усомнился только в одном. Все свои формы я создаю с владельцем равным nil, а не Application как это обычно все используют. Не сочтите за рекламу, но почитал вот эту http://delphi.about.com/od/beginners/l/aa070203b.htm статью и теперь в сомнениях весь, потому как там написано:
Caution is needed with a Nil owner, however. You must take care to destroy the form object yourself, using the Free method. If you try to use Release for a form (or any object) with a Nil owner, your program will crash later with an access violation.
Но у меня ни разу не вываливалась программа с AV при таком раскладе, но когда я уничтожаю форму с помощью Free иногда вылазиют AV. Подскажите пожалуйста, кому верить?
Заранее спасибо.


 
Плохиш ©   (2007-03-02 17:27) [1]

Тебе тоже кусок справки сюда скопировать?


 
Desdechado ©   (2007-03-02 17:28) [2]

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


 
gosha73   (2007-03-02 17:29) [3]

Справку читал, поэтому использую Release, но в справке не указано про момент с владельцем формы равным nil.


 
Плохиш ©   (2007-03-02 17:39) [4]


> gosha73   (02.03.07 17:29) [3]
> Справку читал, поэтому использую Release, но в справке не
> указано про момент с владельцем формы равным nil.

А что там должно быть указано? В Release посылается себе сообщение, по получению которого, вызывается Free.

А свой вопрос задай автору той статьи, чёй-то у него программа crash-ается, никак из-за ошибки в 17й строке.


 
DrPass ©   (2007-03-02 17:43) [5]


> you try to use Release for a form (or any object) with a
> Nil owner, your program will crash later with an access
> violation.

Чушь какая-то. Release делает тот же самый Free, только не напрямую, а посылкой сообщения


 
gosha73   (2007-03-02 17:50) [6]

Да я тоже это понимаю, автор статьи походу прогнал и только других в заблуждение вводит. Хотя и CM_RELEASE тоже не так идеален. Почитал про это сообщение в королевстве дельфи сейчас.
Ну в принципе вопрос для меня закрыт. Всем спасибо.


 
Плохиш ©   (2007-03-02 18:40) [7]


> gosha73   (02.03.07 17:50) [6]

Ты про это чтоли?
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1153&mode=print

procedure TForm2.WndProc(var Msg:TMessage);
begin
 inherited;
 S[2]:="x" {*}
end;

Так всё правильно, в inherited произойдёт вызов обработчика сообения, в котором форма уничтожится с помощью Free. Т.о. получается, что статейка-то лажовая...
АФФтар статейки даже не задумался о том, почему в VCL в WndProc сначала идёт своя обработка, а потом вызов inherited, да и сообщения всегда проверяют.


 
Плохиш ©   (2007-03-02 18:44) [8]

Там, кстати, в комментариях это написано...



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

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

Наверх




Память: 0.46 MB
Время: 0.048 c
2-1176116047
Steep
2007-04-09 14:54
2007.04.29
Че-то совсем туплю..


15-1175680037
Romas81
2007-04-04 13:47
2007.04.29
как прикрепить файлы к mailto ?


2-1176270351
tytus
2007-04-11 09:45
2007.04.29
Unix бинарник.


15-1175518945
Kerk
2007-04-02 17:02
2007.04.29
Вопрос линуксоидам


15-1175375398
БарЛог
2007-04-01 01:09
2007.04.29
IE. подключение к нескольким серверам





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский