powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик ошибок
2 сообщений из 2, страница 1 из 1
Обработчик ошибок
    #39844800
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фрагмент кода обработчика ошибок:
Код: sql
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.
* Создаем константы символов.
S_NEW_LINE = CHR(13) + CHR(10) && Переход на новую строку.
S_QUOTE    = CHR(34)           && двойная кавычка (").
S_ARROW    = " => "            && Стрелка. 

* Получаем детали ошибки.
lcDateTime     = TTOC(DATETIME())
lcErrorMessage = SUBSTR(MESSAGE(), 1, LENC(MESSAGE())-1)
lcLineOfCode   = MESSAGE(1)
lcErrorNumber  = ALLTRIM(STR(ERROR()))
lcLineNumber   = ALLTRIM(STR(LINENO(1)))
lcMaintenance  = getProgrammSetting("Maintenance")

* Получаем цепочку вызова до момента возникновения ошибки.
lcProgrammChain = ""
lnChainLenght = PROGRAM(-1)
FOR i = 1 TO lnChainLenght
	lcNextEement = PROGRAM(i)
	IF (ALLTRIM(lcNextEement) != "ON...") AND (ALLTRIM(lcNextEement) != "ERRORHANDLER")
		IF !EMPTY(lcProgrammChain)
			lcProgrammChain = lcProgrammChain + S_ARROW + lcNextEement
		ELSE
			lcProgrammChain = lcNextEement
		ENDIF
	ENDIF
ENDFOR

* Формируем сообщение разработчику.
lcAdminMessage  = lcDateTime + S_NEW_LINE +;
                  "   Ошибка:       №" + lcErrorNumber + " " + S_QUOTE + lcErrorMessage + S_QUOTE + S_NEW_LINE +;
                  "   Исходный код: " + S_QUOTE + lcLineOfCode + S_QUOTE + S_NEW_LINE +;
                  "   Программа:    " + lcProgrammChain + S_NEW_LINE +;
                  "   Строка:       " + lcLineNumber + S_NEW_LINE



То, что выводится в лог файл (lcAdminMessage):

При запуска из проекта (Вариант 1):
Код: sql
1.
2.
3.
4.
5.
02.08.2019 18:42:52
   Ошибка:       №16 "Unrecognized command verb"
   Исходный код: "dfgsdfg"
   Программа:    MAIN => SHOWJOURNAL_01 => F03_JOURNAL_01.GRID1.COLUMN14.COMMAND3.CLICK => F17_01_EDITJOURNAL.COMMAND8.CLICK => F17_03_SOLDER.COMMAND1.CLICK
   Строка:       11



При запуска из exe-файла (Вариант 2):
Код: sql
1.
2.
3.
4.
5.
6.
02.08.2019 18:44:02
   Ошибка:       №16 "Неизвестная команда"
   Исходный код: "SELECT SelectWorker
"
   Программа:    MAIN => SHOWJOURNAL_01 => F03_JOURNAL_01.GRID1.COLUMN14.COMMAND3.CLICK => F17_01_EDITJOURNAL.COMMAND8.CLICK => F17_03_SOLDER.COMMAND1.CLICK
   Строка:       11



Вопрос: Вариант 1 - верный, выводит то, что нужно. Но после формирования *.exe - файла и запуска программы из него, получается вариант 2, в котором строки "ошибка" и "исходный код" отличаются.
То, что в варианте 1 ошибка описана на английском а в варианте 2 на русском - это мелочь. Но что происходит со строкой "Исходный код" - это совсем другая строка, и не понятно, как она сюда попала?
...
Рейтинг: 0 / 0
Обработчик ошибок
    #39844814
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В справке по команде Message() отдельно выделено как замечание

MESSAGE(1) is not available in the runtime.

MESSAGE(1) - недоступна в режиме выполнения программы RunTime.


Эта команда берет исходный код, которого в готовом EXE, при определенных условиях, может просто не быть. Вот разработчики и не стали заморачиваться есть или нет, а просто запретили использовать. Что функция вернет в этом случае - не известно...

Правда, некоторые программисты утверждали, что у них в Run-Time это работало. Но сомнительно как-то...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик ошибок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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