Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TApplication завершение работы / 25 сообщений из 34, страница 1 из 2
02.03.2022, 19:24
    #40137185
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Доброго времени суток. Подскажите, пожалуйста, какой метод надо перекрыть в потомке TApplication, чтобы обработать завершение программы
...
Рейтинг: 0 / 0
02.03.2022, 19:37
    #40137187
DetSimen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Это зависит от того, что ты хочешь сделать
...
Рейтинг: 0 / 0
02.03.2022, 19:41
    #40137188
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
DetSimen, я хочу поймать момент завершения работы Application и выполнить некоторые действия перед выходом.
...
Рейтинг: 0 / 0
02.03.2022, 19:50
    #40137189
Zelius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur,

а чем не понравилось перехватить закрытие главной формы?
А вообще смотри компонент TApplicationEvents OnTerminate, что ли.
...
Рейтинг: 0 / 0
02.03.2022, 20:05
    #40137191
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gurвыполнить некоторые действия перед выходом.

Поместить код после вызова Application.Run или в секцию finalization мешает что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.03.2022, 20:59
    #40137193
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur
Доброго времени суток. Подскажите, пожалуйста, какой метод надо перекрыть в потомке TApplication, чтобы обработать завершение программы

Не надо так делать. Применение потомков TApplication - сомнительная и спорная практика. Как минимум, она требует определённого уровня квалификации, при котором человек сам без проблем найдёт ответ на этот вопрос. Раз Вы его задаёте - лучше не лезьте в дебри и не тащите туда проект.

S_Gur
DetSimen, я хочу поймать момент завершения работы Application и выполнить некоторые действия перед выходом.

Application здесь не при чём. Для этого существует ряд возможностей, наиболее классическая, ещё с 83-го года, называется AddExitProc (без проблем гуглится).
...
Рейтинг: 0 / 0
02.03.2022, 21:12
    #40137194
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Zelius, у меня нет главной формы. Вообще нет форм. В этом и проблема
...
Рейтинг: 0 / 0
02.03.2022, 21:16
    #40137195
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Dimitry Sibiryakov, После вызова Application.Run не срабатывает - видимо, Run выкидывает раньше. А секцию Finalization мне ставить негде - насколько я помню, в файле проекта это не поддерживается
...
Рейтинг: 0 / 0
02.03.2022, 21:34
    #40137200
Zelius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur,

Значит где то чтото типа ExitProcess стоит, найти где процесс заканчивается из под отладчика 5 минут, а гадать что за странное приложение можно долго…
...
Рейтинг: 0 / 0
02.03.2022, 21:49
    #40137203
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Zelius, это Лазарус. Там вообще не очень хорошо с отладчиком, но ищу. Просто надеялся, что кто-то сталкивался
...
Рейтинг: 0 / 0
02.03.2022, 22:23
    #40137208
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur,
В форумах по Лазарусу спрашивал?
...
Рейтинг: 0 / 0
02.03.2022, 22:32
    #40137209
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Vlad F, кинул вопрос на фрипаскалевский форум, пока ответа нет
...
Рейтинг: 0 / 0
02.03.2022, 22:44
    #40137210
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur,

Просто у вас там скорее всего совсем другой TApplication.
...
Рейтинг: 0 / 0
02.03.2022, 22:56
    #40137212
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Vlad F, да, я пишу простенький веб-сервер. Но он унаследован от обычного TCustomApplication

https://wiki.lazarus.freepascal.org/fpWeb_Tutorial/ru

Webserver example

This is an example of a simple, cross-platform, multi-threaded web server.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
program webserver;
 
{$mode objfpc}{$H+}
 
uses
  {$ifdef UNIX}
    cthreads, cmem,
  {$endif} 
  fphttpapp, httpdefs, httproute;
 
procedure route1(aReq: TRequest; aResp: TResponse);
begin
  aResp.content:='<html><body><h1>Route 1 The Default</h1></body></html>'
end;
 
procedure route2(aReq: TRequest; aResp: TResponse);
begin
  aResp.content:='<html><body><h1>Route 2</h1></body></html>'
end;
 
begin
  HTTPRouter.registerRoute('/', @route1, true);
  HTTPRouter.registerRoute('/route2', @route2);
  Application.port := 8080;
  Application.threaded := true;
  Application.initialize;
  Application.run;
end.
...
Рейтинг: 0 / 0
02.03.2022, 23:46
    #40137219
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur,

ну и зачем тебе вообще TApplication?
...
Рейтинг: 0 / 0
03.03.2022, 00:04
    #40137222
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_GurПосле вызова Application.Run не срабатывает - видимо, Run выкидывает раньше.

Или ты просто не понимаешь как программа работает и "завершением" называешь
что-то другое.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.03.2022, 07:12
    #40137233
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
ъъъъъ, потому, что не знаю, как обойтись без него. Пока, во всяком случае, не получается. Если подскажете другое решение - буду очень признателен
...
Рейтинг: 0 / 0
03.03.2022, 07:15
    #40137234
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
Dimitry Sibiryakov, завершением программы в данной конкретной ситуации я называю окончание работы метода Run. Но в этом классе он не перекрывается, поэтому я пытаюсь найти другое решение
...
Рейтинг: 0 / 0
03.03.2022, 07:52
    #40137237
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur,

скажите, это приложение является сервисом в Windows или демоном в Unix? Если так, то обрабатывайте остановку службы, а не окончание работы TApplication.
...
Рейтинг: 0 / 0
03.03.2022, 08:00
    #40137239
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
goldmi45, планируется именно так, но пока что это тестовый пример и запускается в виндах как обычное приложение - в службу я его еще не заворачивал
...
Рейтинг: 0 / 0
03.03.2022, 09:49
    #40137245
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur
Код: pascal
1.
Application.run;


Если после этой строки вставить свой код, то он не работает?
...
Рейтинг: 0 / 0
03.03.2022, 10:30
    #40137257
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
wadman, нет - в этом и дело. В Application класса TApplication - работает. В Application класса THTTPApplication - нет. После Application.Run программа завершается
...
Рейтинг: 0 / 0
03.03.2022, 11:06
    #40137268
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
S_Gur
wadman, нет - в этом и дело. В Application класса TApplication - работает. В Application класса THTTPApplication - нет. После Application.Run программа завершается

Непонятные вещи пишешь, даже противоречивые...

"Done" напишет при завершении?

S_Gur
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
program webserver;
 
{$mode objfpc}{$H+}
 
uses
  {$ifdef UNIX}
    cthreads, cmem,
  {$endif} 
  fphttpapp, httpdefs, httproute;
 
procedure route1(aReq: TRequest; aResp: TResponse);
begin
  aResp.content:='<html><body><h1>Route 1 The Default</h1></body></html>'
end;
 
procedure route2(aReq: TRequest; aResp: TResponse);
begin
  aResp.content:='<html><body><h1>Route 2</h1></body></html>'
end;
 
begin
  HTTPRouter.registerRoute('/', @route1, true);
  HTTPRouter.registerRoute('/route2', @route2);
  Application.port := 8080;
  Application.threaded := true;
  Application.initialize;
  Application.run;
  Writeln('Done');
end.

...
Рейтинг: 0 / 0
03.03.2022, 11:34
    #40137278
Zelius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
подозреваю, что что бы Application.run закончился, надо где то вызывать Application.Terminate, чего никто не делает. А закрытие по крестику или чему там, просто убивает приложение. тут надо или обработчик Ctrl+C писать для терминалов, или урл какой предусмотреть типа /quit Что бы по нему приложение корректно завершалось.
...
Рейтинг: 0 / 0
03.03.2022, 11:44
    #40137283
S_Gur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TApplication завершение работы
wadman, нет, не напишет. До этой строки дело не доходит. Ты сам попробуй, если Лазарус стоит. Код, который я привел - это законченное приложение
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TApplication завершение работы / 25 сообщений из 34, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]