![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
razumsap |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Собственно вопрос.
Как закрыть программу, если стоит задержка Delay-ем 10 минут, форма не риагирует на закрытие. Только через диспетчер задачь могу грохнуть, хотелось бы корректно. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Сбрасываешь флаг Terminated в true и ожидание прекращается. Это сообщение отредактировал(а) Alexeis - 2.7.2010, 13:48 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Только or вместо ||.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Keeper89, эта болезнь называется С++
![]() Еще такой момент. Если флаг устанавливать в OnClose, то в цикл нужно чуток переделать
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
флаг уже есть: Application.Terminated
Это сообщение отредактировал(а) Frees - 2.7.2010, 14:04 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
VCL ![]() Здорово, значит обработчик OnClose даже не нужен, только Application.ProcessMessages(); для обработки сообщения о завершении. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Только по обнаружению признака Terminated лучше бы делать Abort.
Потому что вызывающий может быть устроен так:
Что с того, что Delay выйдет раньше времени, если вызывающий просто продолжает работу без попыток анализа флага? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
![]() З.Ы. Судя по всему ТС наставил минусов и убежал ) |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Но ведь тогда не будет возможности произвести завершающие операции в программе. Или ты имеешь ввиду, что код должен быть помещен в try finally end, а все завершающие операции помещены в finally ? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Должен. Ведь от AV никто не застрахован. А даже если нет - мы ведь всё равно выходим из программы. Автор, вон, вообще Terminate процессу делал до этого. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
razumsap |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.12.2007 Репутация: нет Всего: нет |
Понравилось такая штука
Halt(4); жаль что несовсем то что я хотел Это сообщение отредактировал(а) razumsap - 5.7.2010, 08:16 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
На самом деле, если возникло неожиданное AV, то программу можно смело закрывать. Дальнейшее поведение непредсказуемо. Поэтому не согласен на счет AV. Другое дело, что многие классы VCL генерят программные исключения, как стандартный механизм уведомления об ошибке. И тем не менее вопрос состоит в том,
Многие ведь не используют try finally (или используют исключительно редко), так что твой Abort() произвел бы аварийное завершение без сохранения данных пользователя ![]() ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
AV <> EDivByZero. C++ fail. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |