![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Если у меня приложение, содержащие всего одну форму, то какая разница между Form.Close, Application.Terminate и Halt???? Почему после вызова Form.Close выполнение программы продолжается (то же самое и Application.Terminate), а вот Halt вырубает начисто???
|
|||
|
||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| Albinos_x |
|
||||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
при этой команде procedure FormClose(Sender: TObject; var Action: TCloseAction); обрабатываться не будет Добавлено @ 11:11
ищи косяк в процедуре: procedure FormClose(Sender: TObject; var Action: TCloseAction); возможно переменную Action делаешь равной false, поэтому и не закрывается... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
||||
|
|||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
есть еще более серьезные игрушки типа ExitProcess, TerminateProcess...
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
каторые нежелательно использовать!!! |
|||
|
||||
| Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Form.Close закрывает приложение только в том случае, когда мы закрываем главную форму. Приложение смотрит: Ага, главную форму закрыли, значит нужно делать Application.Terminate. Application.Terminate прекращает выполнение цикла, запущенного Application.Run, и программа просто заканчивается. А вот коварный Halt делает выход прямо из текущей точки программы. Довольно жестоко для программ на VCL, но допустимо для неVCL программ.
Это совсем жестоко. В данном случае процесс будет прерван. Минусы в том, что не отработает дельфевый сборщик мусора. Винда, конечно, подчистит объекты ядра и user, но так делать не стоит. Завершать программу нужно естественным образом: Закрытием главного окна или на худой конец Application.Terminate. |
||||
|
|||||
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Snowy Та к я так и пытаюсь сделать, но после Form.Close программа продолжает работу!!!!!!!
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Что в onClose и есть еще такая фича как OnCloseQuery
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Значит это не главная форма приложения. Либо стоит какой-то обработчик, который не дает форме закрыться. (например OnCloseQuery) Либо в dpr реализовано что-то отличное от стандарта. |
|||
|
||||
| dddimok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Возможно, вы где-нибудь организовали цикл
В этом случае приложение не закроется по Form.Close, пока вы не выйдете из этого цикла. Вообще попытайтесь закрыть программу, а потом остановите ее и при помощи стека вызовов посмотрите, где она у вас бродит. Предварительно влючите Debug dcu Это сообщение отредактировал(а) dddimok - 22.12.2005, 14:32 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |