Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выполнить процедуру при аварийном завершщении / 24 сообщений из 24, страница 1 из 1
24.04.2018, 12:03
    #39635246
apexplsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
Как выполнить процедуру при аварийном завершении программы ?
...
Рейтинг: 0 / 0
24.04.2018, 12:08
    #39635249
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
Смотря насколько аварийное это завершение. Ответ может варьироваться от "finalization" до
"обломись".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2018, 12:19
    #39635263
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
apexplsql,

Можно попробовать присваивать ExitCode=0, только если все хорошо, а вначале инициализировать его не нулем.
Ну и в Starter.exe ждать завершения программы и проверять ExitCode.

Правда, это не поможет, если питание выключить - тоже аварийное завершение своего рода.
...
Рейтинг: 0 / 0
24.04.2018, 12:20
    #39635264
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
YuRockПравда, это не поможет, если питание выключить - тоже аварийное завершение своего рода.Поэтому можно при следующем запуске узнать, что было аварийно, и что-то сделать.
...
Рейтинг: 0 / 0
24.04.2018, 12:31
    #39635275
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
apexplsqlКак выполнить процедуру при аварийном завершении программы ?
Сделай приложение, следящее за этим. Процедуру, соответственно, в следящем приложении размести.
...
Рейтинг: 0 / 0
24.04.2018, 13:28
    #39635339
apexplsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
чччД,
А есть примеры такого приложения ?
...
Рейтинг: 0 / 0
24.04.2018, 13:39
    #39635368
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
При входе создаете файл. При штатном выходе удаляете. Важные события можно в него логгировать.
Если при входе файл уже есть, значит предыдущий сеанс завершился фейлом. А содержимое файла возможно поможет понять, что и когда произошло.
...
Рейтинг: 0 / 0
24.04.2018, 13:42
    #39635373
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
apexplsqlА есть примеры такого приложения ?Это Starter.exe из моего ответа.
Пример - около трех строчек кода:
1. CreateProcess - тут запускаем твою программу, получаем хендл процесса;
2. WaitFoeSingleObject( ХэндлПроцесса, INFINITE );
3. GetExitCodeProcess - получаем ExitCode, анализируем, принимаем решение, аварийно или нет.
...
Рейтинг: 0 / 0
24.04.2018, 13:44
    #39635377
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
L_argoПри входе создаете файл. При штатном выходе удаляете.Если программа позволяет запускать несколько копий - будет каша.
...
Рейтинг: 0 / 0
24.04.2018, 13:44
    #39635382
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
YuRockWaitFoeSingleObjectWaitForSingleObject
...
Рейтинг: 0 / 0
24.04.2018, 13:47
    #39635388
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
YuRock3. GetExitCodeProcess - получаем ExitCode, анализируем, принимаем решение, аварийно или нет.А как это сработает при вырубании света ?
...
Рейтинг: 0 / 0
24.04.2018, 13:56
    #39635400
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
24.04.2018 13:47, L_argo пишет:
> А как это сработает при вырубании света ?

а как ты собираешься "выполнять процедуру" на ВЫКЛЮЧЕННОМ хосте?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2018, 14:13
    #39635418
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
apexplsqlчччД,
А есть примеры такого приложения ?
А в чем проблема сделать такое?
...
Рейтинг: 0 / 0
24.04.2018, 15:07
    #39635466
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
L_argoYuRock3. GetExitCodeProcess - получаем ExitCode, анализируем, принимаем решение, аварийно или нет.А как это сработает при вырубании света ? 21363813
...
Рейтинг: 0 / 0
24.04.2018, 15:16
    #39635470
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
L_argo,

В общем - надо хранить идентификатор экземпляра программы, даты, еще может что где-то (например в файле, как ты предлагал приблизительно) с признаком успешного завершения и при запуске пытаться монопольно обрабатывать эти записи. А другие копии должны лочить свои области этого файла всю свою жизнь, чтобы вновь запускающиеся копии не смогли их прибить.
...
Рейтинг: 0 / 0
24.04.2018, 17:17
    #39635540
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
Мимопроходящий24.04.2018 13:47, L_argo пишет:
> А как это сработает при вырубании света ?

а как ты собираешься "выполнять процедуру" на ВЫКЛЮЧЕННОМ хосте?
Никак. Но позже получить признак "авария" можно. И отреагировать.

Тот же Файрфокс как-то знает, что предыд. сессия зафейлилась. Н-р по эл.питанию.
...
Рейтинг: 0 / 0
24.04.2018, 17:34
    #39635549
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
24.04.2018 17:17, L_argo пишет:
> Никак. Но позже получить признак "авария" можно. И отреагировать.

тогда только запись в файл с FILE_FLAG_WRITE_THROUGH
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2018, 17:47
    #39635556
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
А кто мешает читать журнал системы Windows?
Там всё фиксируется, разобраться не сложно.
...
Рейтинг: 0 / 0
24.04.2018, 20:05
    #39635654
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
Можно идти от обратного, как винда -- писать в файл/реестр по таймеру, а при следующем запуске смотреть, все ли хорошо записалось (если нет "конца", то завершение было аварийным).
...
Рейтинг: 0 / 0
24.04.2018, 20:26
    #39635660
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
d7iА кто мешает читать журнал системы Windows?
Там всё фиксируется, разобраться не сложно.
1. Он тормозной.
2. Ок, прочитали при запуске, разобрали всё, определили, что винда не была завершена корректно. Дальше что делать? Чем это поможет ТС?
...
Рейтинг: 0 / 0
24.04.2018, 21:16
    #39635680
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
YuRock,
знать причину аварии - уже полдела.
Возможно, нужно провести какое-то восстановление данных, проверки целостности и т.д.
А как иначе узнать, что было отключение электропитания?
Писать лог каждую секунду по таймеру?
Лог лучше вести только событийный. Нормальное завершение - записали.
При запуске проверили лог - нет нормального завершения. Начинаем поиск в логе ОС.
Долго, но как иначе поймать сбой по питанию...
...
Рейтинг: 0 / 0
24.04.2018, 22:06
    #39635699
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
d7iВозможно, нужно провести какое-то восстановление данных, проверки целостности и т.д.

Проверка целостности должна проводиться по-любому при каждом запуске.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.04.2018, 22:37
    #39635711
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
d7iА как иначе узнать, что было отключение электропитания?
Писать лог каждую секунду по таймеру?Достаточно зафиксировать запуск и "пропустить" фиксацию закрытия. Сняли процесс или из розетки выключили - и то, и то - авария.
...
Рейтинг: 0 / 0
24.04.2018, 22:58
    #39635714
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить процедуру при аварийном завершщении
ТС вбросил и свалил, а вы тут херь несёте.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выполнить процедуру при аварийном завершщении / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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