25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
1

Операторы Exit, Close, Application.Terminate в чем разница между ними?

30.04.2012, 13:42. Показов 29404. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу понять разницу между этими операторами.
Например, оператор Application.Terminate выходит из программы, то же делает и Close. ТОгда как выбирать, что из них ставить?
0
30.04.2012, 13:42
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2012, 13:42
Ответы с готовыми решениями:

Есть ли разница между VCL Forms Application и Application?
Мне нужно открыть VCL Forms Application. Для этого нужно выполнить команду главного меню File - New - VCL Forms Application. Но у меня VCL...

Отличие exit и terminate
Привет:) Вот в чем отличие между: Exit; и Application.Terminate; И тот и другой, закрывают программу. В чем подвох?

В чём заключается разница между VSL Form и VSL Forms Application?
В чём заключается разница между VSL Form и VSL Forms Application? Заранее спасибо за ответ)

7
113 / 113 / 28
Регистрация: 05.07.2009
Сообщений: 225
01.05.2012, 00:04 2
<FormName>.Close генерирует событие OnClose, которое можно перехватить, например для подтверждения выхода. Application.Terminate просто освобождает память и завершает работу, не генерируя OnClose. Terminate можно перехватить с помощью OnDestroy, но к тому моменту от формы ничего не останется.

Добавлено через 16 минут
Другими словами Close - это не смертельно, а после Terminate программу реанимировать уже не получится.
2
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
01.05.2012, 10:15  [ТС] 3
А можете ссылочкой поделиться или сами объяснить каким образом можно перехватить событие закрытия? Если я правильно думаю, что за это отвечают события: FormClose и FormDestroy, которые находятся в инспекторе объектов во вкладке Events. Это и все? Или есть еще места? Или я гоню?
0
 Аватар для HanDi
898 / 345 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
01.05.2012, 12:05 4
Delphi
1
2
3
4
5
6
7
8
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if MessageDlg('Вы действительно хотите покинуть программу?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then
  begin
   Action := caNone;
   Exit;
  end;
end;
1
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
03.05.2012, 13:11  [ТС] 5
Delphi
1
2
3
4
5
6
7
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 
     if MessageDlg('Действительно закрыть программу?', mtInformation, [mbYes,mbNo], 0)=mrYes then Application.Terminate
  else
    Action := caNone;
  end;
При таком коде выдается запрос, но кнопки на английском и заголовок сообщения аналогично. Подскажите как сформулировать свой диалог с заголовком текстом и кнопками?
0
 Аватар для Arcor
5707 / 2298 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
03.05.2012, 13:35 6
MessageBox
1
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
03.05.2012, 13:41  [ТС] 7
Надыбал методом научного тыка. Вот, если кому надо:
Delphi
1
2
3
4
5
6
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    if (MessageBox(handle, PChar('Текст?'), PChar('Заголовок'), MB_YESNO+MB_ICONQUESTION) =mrYes) then Application.Terminate
 else
    Action := caNone;
      end;
0
15 / 15 / 2
Регистрация: 01.05.2012
Сообщений: 55
03.05.2012, 14:06 8
Кстати, вдогонку
события присутствуют во всех формах программы, а заканчивает работу только событие главного окна.
А процедура Terminate относится к основному циклу программы, который происходит в невидимом окне.
1
03.05.2012, 14:06
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2012, 14:06
Помогаю со студенческими работами здесь

В чем разница между двумя объявлениями класса
Здравствуйте! Помогите, пожалуйста, разобраться В чем разница между двумя объявлениями: TClassName = class; end; TClassName =...

В чем разница между Visual Basic и Delphi?
В чем разница между Visual Basic и Delphi

В чем разница между quit(),exit() и terminate() ?
Читал описание класса QThread и не могу понять в чем собствнно различие функций quit(),exit() и terminate(). чем лучше остановить поток?

this->Close() vs Application->Terminate()
В силу специфики программы необходимо при определенных условиях закрыть программу. Но закрыть так, что бы процесс закрытия уже ничем нельзя...

DirectX и OpenGL в чем разница между ними?
DirectX и OpenGL в чем заключается разница между ними? И что проще для начала изучения работы с графикой?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Ошибка "Cleartext HTTP traffic not permitted" в Android
hw_wired 13.02.2025
При разработке Android-приложений можно столнуться с неприятной ошибкой "Cleartext HTTP traffic not permitted", которая может серьезно затруднить отладку и тестирование. Эта проблема особенно. . .
Изменение версии по умолчанию в NVM
hw_wired 13.02.2025
Node Version Manager, или коротко NVM - незаменимый инструмент для разработчиков, использующих Node. js. Многие сталкивались с ситуацией, когда разные проекты требуют различных версий Node. js,. . .
Переименование коммита в Git (локального и удаленного)
hw_wired 13.02.2025
Git как система контроля версий предоставляет разработчикам множество средств для управления этой историей, и одним из таких важных средств является возможность изменения сообщений коммитов. Но зачем. . .
Отличия Promise и Observable в Angular
hw_wired 13.02.2025
В веб-разработки асинхронные операции стали неотъемлимой частью почти каждого приложения. Ведь согласитесь, было бы странно, если бы при каждом запросе к серверу или при обработке больших объемов. . .
Сравнение NPM, Gulp, Webpack, Bower, Grunt и Browserify
hw_wired 13.02.2025
В современной веб-разработке существует множество средств сборки и управления зависимостями проектов, каждое из которых решает определенные задачи и имеет свои особенности. Когда я начинаю новый. . .
Отличия AddTransient, AddScoped и AddSingleton в ASP.Net Core DI
hw_wired 13.02.2025
В современной разработке веб-приложений на платформе ASP. NET Core правильное управление зависимостями играет ключевую роль в создании надежного и производительного кода. Фреймворк предоставляет три. . .
Отличия между venv, pyenv, pyvenv, virtualenv, pipenv, conda, virtualenvwrapp­­er, poetry и другими в Python
hw_wired 13.02.2025
В Python существует множество средств для управления зависимостями и виртуальными окружениями, что порой вызывает замешательство даже у опытных разработчиков. Каждый инструмент создавался для решения. . .
Навигация с помощью React Router
hw_wired 13.02.2025
React Router - это наиболее распространенное средство для создания навигации в React-приложениях, без которого сложно представить современную веб-разработку. Когда мы разрабатываем сложное. . .
Ошибка "error:0308010C­­:dig­ital envelope routines::unsup­­ported"
hw_wired 13.02.2025
Если вы сталкиваетесь с ошибкой "error:0308010C:digital envelope routines::unsupported" при разработке Node. js приложений, то наверняка уже успели поломать голову над её решением. Эта коварная ошибка. . .
Подключение к контейнеру Docker и работа с его содержимым
hw_wired 13.02.2025
В мире современной разработки контейнеры Docker изменили подход к созданию, развертыванию и масштабированию приложений. Эта технология позволяет упаковать приложение со всеми его зависимостями в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru