Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/141: Рейтинг темы: голосов - 141, средняя оценка - 4.77
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330

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

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

Студворк — интернет-сервис помощи студентам
Хочу понять разницу между этими операторами.
Например, оператор Application.Terminate выходит из программы, то же делает и Close. ТОгда как выбирать, что из них ставить?
0
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
<FormName>.Close генерирует событие OnClose, которое можно перехватить, например для подтверждения выхода. Application.Terminate просто освобождает память и завершает работу, не генерируя OnClose. Terminate можно перехватить с помощью OnDestroy, но к тому моменту от формы ничего не останется.

Добавлено через 16 минут
Другими словами Close - это не смертельно, а после Terminate программу реанимировать уже не получится.
2
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
01.05.2012, 10:15  [ТС]
А можете ссылочкой поделиться или сами объяснить каким образом можно перехватить событие закрытия? Если я правильно думаю, что за это отвечают события: FormClose и FormDestroy, которые находятся в инспекторе объектов во вкладке Events. Это и все? Или есть еще места? Или я гоню?
0
 Аватар для HanDi
898 / 345 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
01.05.2012, 12:05
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  [ТС]
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
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
03.05.2012, 13:35
MessageBox
1
25 / 14 / 1
Регистрация: 13.08.2010
Сообщений: 330
03.05.2012, 13:41  [ТС]
Надыбал методом научного тыка. Вот, если кому надо:
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
Кстати, вдогонку
события присутствуют во всех формах программы, а заканчивает работу только событие главного окна.
А процедура Terminate относится к основному циклу программы, который происходит в невидимом окне.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru