Главная страница
    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.46 MB
Время: 0.005 c
2-1215178202
Pasha L
2008-07-04 17:30
2008.08.10
нужно или не нужно вставлять inherited create?


15-1214206913
Vudu
2008-06-23 11:41
2008.08.10
Можно ли монитор подключить к видеовходу


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


15-1214404156
Урсулапов
2008-06-25 18:29
2008.08.10
Можно ли половину мышки на УСБ соединить с половиной мышки на СОМ-порте?


15-1213998563
Германн
2008-06-21 01:49
2008.08.10
О сканерах





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