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

Вниз

объясните поведение Delphi при выполнении следующего кода   Найти похожие ветки 

 
laao   (2008-07-04 11:26) [0]

объясните поведение Delphi при выполнении следующего кода :

try
 application.terminate;
finally
 showmessage("hello");
 sleep(5000);
end;

выполнив, можно в течении 5 секунд любоваться пустым окном без тайтла и текста сообщения. ну, допустим, заголовка нет, так как showmessage использует параметры приложения (вероятно, его хэндл перестает быть доступен после terminate ?), но почему во-первых, окно таки выводится, а во-вторых, hello пропадает ?


 
Правильный-Вася   (2008-07-04 11:29) [1]


> почему во-первых, окно таки выводится

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


 
Сергей М. ©   (2008-07-04 11:38) [2]


> почему ..окно .. выводится


Потому что ты сам так пожелал.


 
Anatoly Podgoretsky ©   (2008-07-04 11:40) [3]

> laao  (04.07.2008 11:26:00)  [0]

Зачем ты такое делаешь, кульхацкер?


 
laao   (2008-07-04 12:17) [4]

пример, кстати, не совсем надуманный и родился из просмотра чужого когда. только там между трай и файнали кода поболее и вместо showmessage чистка мусора за собой

> Anatoly Podgoretsky

спрашиваю, чтобы понять последовательность телодвижений приложения при его завершении


 
Плохиш ©   (2008-07-04 12:19) [5]


> laao   (04.07.08 12:17) [4]
> пример, кстати, не совсем надуманный и родился из просмотра
> чужого когда. только там между трай и файнали кода поболее
> и вместо showmessage чистка мусора за собой

Т.е. пример, как всегда, в виде вырезания гландов через задний проход...


 
Anatoly Podgoretsky ©   (2008-07-04 12:20) [6]

Если автора поймаешь то не трогай, оставь его мне.
(с) Белое солнце


 
brother ©   (2008-07-04 12:29) [7]

> Если автора поймаешь то не трогай, оставь его мне.
> (с) Белое солнце

Если встретишь его, не торгай, он мой (с) Белое солнце
;)


 
GrayFace ©   (2008-07-05 02:10) [8]

laao, у меня появляется и тут же исчезает.
Application.Terminate просто ставит флаг Terminated, говорящий, что цикл выборки сообщений нужно прекратить. В случае с чисткой мусора она будет происходить. Здесь смотри ShowMessage (Ctrl+клик) - он создает форму, настраивает на ней контролы и вызывает ShowModal - смотри его код - увидишь, в частности, цикл выборки сообщений с проверкой Terminated. При этом все сообщения, посылаемые через SendMessage внутри потока просто вызывает оконную процедуру, минуя очередь сообщений, соответственно, они обрабатываются. Окно пустое, т.к. оно не отрисовывается - WM_PAINT кладется в очередь сообщений и остается необработанным из-за Application.Terminated.
Твой код можно написать так:
application.terminate;
showmessage("hello");
sleep(5000);


 
laao   (2008-07-07 09:13) [9]

> GrayFace

спасибо за детальное разъяснение :)



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

Форум: "Начинающим";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
6-1192002210
Rusya
2007-10-10 11:43
2008.08.10
Прогресс операции в TIdFTP


15-1214124455
Book
2008-06-22 12:47
2008.08.10
Delphi Book


15-1213437901
@!!ex
2008-06-14 14:05
2008.08.10
Дух времини(Zeitgeist)


15-1214547294
Ega23
2008-06-27 10:14
2008.08.10
Мистика с Ctrl+Click какая-то...


2-1215507425
maxmic
2008-07-08 12:57
2008.08.10
TListView фокус





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