Что нового

Как сделать чтобы при запуске скрипта из другого скрипта не выскакивало окно с ошибкой

Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
в итоге получаю один файл со всеми вписанными библиотеками. если программа дает ошибку, то открывают этот файл в редакторе и смотрю номер строки
то есть сначала обработать au3 файл этим кодом, получить RAW файл со всеми библиотеками, потом скомпилировать этот RAW файл в exe и потом если получаю ошибку то по номеру строки искать ее в au3 RAW файле
такая схема?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Нет. Компилируете обычный, исходный, код. А raw делаете при необходимости найти ошибку.
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
Нет. Компилируете обычный, исходный, код. А raw делаете при необходимости найти ошибку.
сделал как вы сказали и искусственно создал ошибку, но почему она указывает не на ту строку где ошибка, ошибка в строке 10425
а сообщение об ошибке Line 10424 (File "C:\Autoit_code\BD BACKUP\NEW_BD_backup.exe"):Error: Variable used without being declared.
очевидно что в 10424 нет ошибки

или это нормально и всегда нужно прибавлять +1 к номеру строки? я попробовал сдвинуть строку с ошибкой и в сообщение об ошибке номер строки так же увеличился на единицу
1687490564597.png
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
У меня номера строк совпадают.
Посмотрите на первую строку raw кода. Возможно она пустая. Если нет, то что там записано?
Нет ли пустых строк посреди этого кода?
 

Cornet

Знающий
Сообщения
41
Репутация
6
Наверное при компиляции вы запускаете стриппер, а он очень сильно может поменять код, пишите в начале кода правила для компиляции:
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=go_up_black.ico
#AutoIt3Wrapper_Outfile=UpLoad.exe
#AutoIt3Wrapper_Outfile_x64=UpLoad.exe
#AutoIt3Wrapper_Res_Comment=-
#AutoIt3Wrapper_Res_Description=
#AutoIt3Wrapper_Res_Fileversion=0.2.6.1
#AutoIt3Wrapper_Res_LegalCopyright=
#AutoIt3Wrapper_Res_Language=1049
#AutoIt3Wrapper_Res_Field=Version|0.2.6.1
#AutoIt3Wrapper_Res_Field=Coded by|
#AutoIt3Wrapper_Res_Field=CompanyName|
#AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
#AutoIt3Wrapper_Run_AU3Check=n
#AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3"
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/PE /SO /RM /SCI=0
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****


не ставьте строку:
Код:
#AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3"

и у вас будет оставаться в папке файл, в котором можно будет найти ошибку по строке. С переименованными переменными, но все таки разобраться можно)
 

JohnWind

Новичок
Сообщения
57
Репутация
0
самое очевидное это комбинация 2х предложений выше:

а) запускать скомпилированный *.exe файл, в таком случае в нём просто не должно быть ошибок, иначе компиляция не пройдёт (случай, что кто-то открыл exe-файл и пошаманил в нём руками - не рассматриваем)
б) в самом файле (до компиляции) - заложить отрабочик вероятных ошибок исполнения программы с логирование (FileWrite) в лог файл.
с) да и вообще лог-файл - весьма полезная фича... особенно когда скрипты работают сами по себе, без участия человека.
 
Верх