|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.01.2008, 14:25 | #11 | |
Новичок
Джуниор
Регистрация: 22.12.2007
Сообщений: 204
|
Цитата:
я всё это взял из книги библия дельфий Фленова |
|
04.01.2008, 14:28 | #12 | |
Форумчанин
Регистрация: 29.12.2007
Сообщений: 137
|
Цитата:
Application.MainForm.Close, зачем извращаться над псевдопосылкой сообщения, чем это принципиально отличается, кроме как количеством букав ben95, при закрытии главной формы - приложение завершится, с этим никто не спорит, но именно главной формы, а не любой. И написано это не в Библии Дельфи, а в более авторитетном источнике - исходниках VCL: Код:
Последний раз редактировалось Ins; 04.01.2008 в 14:32. |
|
04.01.2008, 14:36 | #13 |
Форумчанин
Регистрация: 12.06.2007
Сообщений: 130
|
Еще один способ - PostQuitMessage(0);
|
04.01.2008, 14:52 | #14 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Просто почему я вписал такой метод, потому что большенство присутствующих методов обрывают то процесс или получения сообщений )) таким образом возможен не корректный выход программы и соответственно не срабатывание некоторых событий форм.
|
04.01.2008, 15:00 | #15 |
Форумчанин
Регистрация: 29.12.2007
Сообщений: 137
|
Вообще, строго говоря, хоть способов и много, но они между собой отличаются, и выбрать тот или другой нужно в зависимости от ситуации:
1. ExitProcess или TerminateProcess самое "грубое" завершение. Процесс немедленно завершается, никакая финализация не производится, никаких возможностей прервать завершение процесса либо сохранить данные после вызова нет. 2. Halt - чуть более мягкое завершение. Перед завершением выполняется финализационный код юнитов, также вызывается ExitProc. 3. PostQuitMessage - еще более мягкое. Сообщение о завершении кладется в очередь, но выполнение кода не прерывается, он продолжает выполнение с того же места. Перед закрытием обрабатываются все сообщения из очереди (кроме очереди виртуального ввода, сообщений WM_PAINT и WM_TIMER из-за их низкого приоритета) и вызывается Halt 4. Application.Terminate - еще мягче. Вызывается CallTerminateProcs, затем - PostQuitMessage. При этом есть возможность прервать завершение процесса из одной из TerminateProcs, вернув в ней False, а также выполнить некоторые действия. 5. Закрытие главной формы - еще мягче. Есть возможность прервать закрытие из обработчика OnCloseQuery и выполнить очистку/сохранение результатов. Если закрытие разрешено - вызывается Application.Terminate Последний раз редактировалось Ins; 04.01.2008 в 15:22. |
04.01.2008, 16:30 | #16 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Ну надо же, какое бурное обсуждение простого вопроса! Кстати, вопрос был о завершении приложения, которое может быть и просто консольным, без всяких форм.
Ins, огромное спасибо за подробности. |
05.01.2008, 15:23 | #17 |
Форумчанин
Регистрация: 12.06.2007
Сообщений: 130
|
Если консольное, то Exit.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Завершение действия | SunKnight | Общие вопросы Delphi | 3 | 12.02.2008 18:25 |
Завершение процесса | Terran | Win Api | 3 | 04.01.2008 12:09 |
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. | SkyM@n | Фриланс | 3 | 29.12.2007 16:21 |
Завершение проги | Washington | Общие вопросы Delphi | 15 | 20.09.2007 15:14 |
Завершение приложения, вместе с ОС | John_chek | Общие вопросы Delphi | 5 | 08.06.2007 16:00 |