|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Доброго времени суток. Подскажите, пожалуйста, какой метод надо перекрыть в потомке TApplication, чтобы обработать завершение программы ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 19:24 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Это зависит от того, что ты хочешь сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 19:37 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
DetSimen, я хочу поймать момент завершения работы Application и выполнить некоторые действия перед выходом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 19:41 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, а чем не понравилось перехватить закрытие главной формы? А вообще смотри компонент TApplicationEvents OnTerminate, что ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 19:50 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gurвыполнить некоторые действия перед выходом. Поместить код после вызова Application.Run или в секцию finalization мешает что? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 20:05 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur Доброго времени суток. Подскажите, пожалуйста, какой метод надо перекрыть в потомке TApplication, чтобы обработать завершение программы Не надо так делать. Применение потомков TApplication - сомнительная и спорная практика. Как минимум, она требует определённого уровня квалификации, при котором человек сам без проблем найдёт ответ на этот вопрос. Раз Вы его задаёте - лучше не лезьте в дебри и не тащите туда проект. S_Gur DetSimen, я хочу поймать момент завершения работы Application и выполнить некоторые действия перед выходом. Application здесь не при чём. Для этого существует ряд возможностей, наиболее классическая, ещё с 83-го года, называется AddExitProc (без проблем гуглится). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 20:59 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Zelius, у меня нет главной формы. Вообще нет форм. В этом и проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 21:12 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, После вызова Application.Run не срабатывает - видимо, Run выкидывает раньше. А секцию Finalization мне ставить негде - насколько я помню, в файле проекта это не поддерживается ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 21:16 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, Значит где то чтото типа ExitProcess стоит, найти где процесс заканчивается из под отладчика 5 минут, а гадать что за странное приложение можно долго… ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 21:34 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Zelius, это Лазарус. Там вообще не очень хорошо с отладчиком, но ищу. Просто надеялся, что кто-то сталкивался ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 21:49 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, В форумах по Лазарусу спрашивал? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 22:23 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Vlad F, кинул вопрос на фрипаскалевский форум, пока ответа нет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 22:32 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, Просто у вас там скорее всего совсем другой TApplication. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 22:44 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 22:56 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, ну и зачем тебе вообще TApplication? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 23:46 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_GurПосле вызова Application.Run не срабатывает - видимо, Run выкидывает раньше. Или ты просто не понимаешь как программа работает и "завершением" называешь что-то другое. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 00:04 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
ъъъъъ, потому, что не знаю, как обойтись без него. Пока, во всяком случае, не получается. Если подскажете другое решение - буду очень признателен ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 07:12 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, завершением программы в данной конкретной ситуации я называю окончание работы метода Run. Но в этом классе он не перекрывается, поэтому я пытаюсь найти другое решение ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 07:15 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, скажите, это приложение является сервисом в Windows или демоном в Unix? Если так, то обрабатывайте остановку службы, а не окончание работы TApplication. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 07:52 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
goldmi45, планируется именно так, но пока что это тестовый пример и запускается в виндах как обычное приложение - в службу я его еще не заворачивал ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 08:00 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur Код: pascal 1.
Если после этой строки вставить свой код, то он не работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 09:49 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
wadman, нет - в этом и дело. В Application класса TApplication - работает. В Application класса THTTPApplication - нет. После Application.Run программа завершается ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 10:30 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 11:06 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
подозреваю, что что бы Application.run закончился, надо где то вызывать Application.Terminate, чего никто не делает. А закрытие по крестику или чему там, просто убивает приложение. тут надо или обработчик Ctrl+C писать для терминалов, или урл какой предусмотреть типа /quit Что бы по нему приложение корректно завершалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 11:34 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
wadman, нет, не напишет. До этой строки дело не доходит. Ты сам попробуй, если Лазарус стоит. Код, который я привел - это законченное приложение ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 11:44 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Zelius, да, я это уже понял. По вызову Terminate код, идущий после Application.Run, отрабатывает. Мне почему-то казалось, что закрытие окна крестиком - это не аварийный выход. Буду искать, как написать обработчик Ctrl+С - это все равно нужно. Спасибо, я понял, в какую сторону нужно копать дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 11:51 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, SetConsoleCtrlHandler кажется ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 12:06 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Zelius, да, нашел уже, все равно - большое спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 12:18 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
wadman"Done" напишет при завершении? Если приложение не консольное - не напишет по определению ибо некуда. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 12:46 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Zelius, скажи, пожалуйста, а я могу при перехвате Ctrl+C как-то указать, что ситуация штатная, а не аварийная? Потому как если я выполняю Application.Terminate при обработке HTTP-запроса, программа завершается штатно и правильно. А когда я делаю то же самое при обработке Ctrl+C, то я свои необходимые действия выполнить могу, но по факту программа все равно закрывается аварийно. Можно ли как-то сбросить признак аварийного выключения? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 13:02 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, ты же возвращаешь правильно Result в обработчике? код в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 13:08 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Zelius, Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 13:15 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
S_Gur, должно работать. попробуй всегда True возвращать, попробуй логировать что за CtrlType приходит, посмотри как на Ctrl+C реагирует... Ну и классика - SetConsoleCtrlHandler что возвращает? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 13:21 |
|
TApplication завершение работы
|
|||
---|---|---|---|
#18+
Zelius, SetConsoleCtrlHandler возвращает True, события перехватываются, на нажатие крестика получаю 2, на Ctrl+C - 0, все в соответствии с константами, там все правильно, перехват выполняется корректно. В общем-то, это уже неважно, я выкрутился несколько иначе: Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
Теперь все, что мне нужно, очень корректно обрабатывается в процедурах InitHTTP и DoneHTTP. Моя проблема решена, всем большое спасибо за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 13:57 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2036595]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 247ms |
total: | 415ms |
0 / 0 |