Скрипт выдал ошибку, что делать?




Обычно сообщение об ошибке достаточно информативно, чтобы исправить эту ошибку. Если сообщение указывает на строку, в которой нет ошибки, то скорее всего не закрыт цикл или условие.

Нашли строку, но не знаете что с ней делать? Поставьте перед сбойной строкой MsgBox с выводом значения переменной, чтоб увидеть, являются ли данные тем, что необходимо получить. И если переменная является массивом, то используйте _ArrayDisplay, добавив в начало скрипта #include <array.au3>

Если скрипт был найден на форуме, то попытайтесь выяснить версию AutoIt3, с которой использовался скрипт, например по дате поста. Проверьте чтобы все необходимые скрипту #include добавлены в папку \AutoIt3\Include или рядом со скриптом.

Одна из трудно выявляемых ошибок - одинаковая переменная счётчика $i для двух циклов For...Next, один из которых является вложенным в другой. Вполне понятно, что это нарушит работу циклов, иногда даже выдавая близкий к ожидаемому результат.

Если окно ошибки указывает на переменную являющуюся элементом массива, даже если вы уверены что с массивом всё в порядке, то очень вероятно, что цикл использует индекс превышающий существующие индексы в массиве. Используйте UBound($array) - 1 или, если количество элементов хранится в $array[0], то проверьте, что это значение соответствует действительности.


Фатальные ошибки AutoIt

Ниже приведен полный список фатальных ошибок AutoIt, возникающих при неправильном написании скриптов пользователем. Всего 74

Текст ошибкиПеревод текста
Unable to open the script file.Не удается открыть файл сценария.
Badly formatted "Func" statement.Неправильный формат оператора "Func"
Unable to parse line.Не удалось разобрать строку.
Missing right bracket ')' in expression.Отсутствует правая скобка ')' в выражении.
Missing operator in expression.Отсутствует оператор в выражении.
Unbalanced brackets in expression.Незакрытые скобки в выражении.
Error in expression.Ошибка в выражении
Error parsing function call.Ошибка разбора (парсинга, синтаксиса) вызываемой функции
Incorrect number of parameters in function call.Неверное количество параметров при вызове функции
"ReDim" used without an array variable."ReDim" используется с переменной не являющейся массивом
Illegal text at the end of statement (one statement per line).Недопустимый текст в конце оператора (один оператор в строке)
"If" statement has no matching "EndIf" statement.Оператор "If" не имеет сопровождающий его оператор "EndIf"
"Else" statement with no matching "If" statement.Оператор "Else" не имеет сопровождающий его оператор "If"
"EndIf" statement with no matching "If" statement.Оператор "EndIf" не имеет сопровождающий его оператор "If"
Too many "Else" statements for matching "If" statement.Слишком много операторов "Else" для одного оператора "If"
"While" statement has no matching "Wend" statement.Оператор "While" не имеет сопровождающий его оператор "Wend"
"Wend" statement with no matching "While" statement.Оператор "Wend" не имеет сопровождающий его оператор "While"
Variable used without being declared.Переменная используется без первоначального объявления
Array variable has incorrect number of subscripts or subscript dimension range exceeded.Переменная массива имеет неверное количество индексов или индекс превышает размер массива.
Array variable subscript badly formatted.Неправильный формат индекса в переменной массива.
Subscript used with non-Array variable.Индекс используется с переменной не являющейся массивом
Too many subscripts used for an array.Слишком много индексов для массива. Пример Dim $a[1] = [[1]]
Missing subscript dimensions in "Dim" statement.Отсутствуют индексы измерений в операторе "Dim". Пример Dim $a[1] = 1
No variable given for "Dim", "Local", "Global" or "Const" statement.Отсутствует объявление переменной в операторах "Dim", "Local", "Global" или "Const"
Expected a "=" operator in assignment statement.Ожидается оператор "=" в конструкции присваивания.
Invalid keyword at the start of this line.Недопустимое ключевое слово в начале этой линии
Array maximum size exceeded.Превышен максимальный размер массива
"Func" statement has no matching "EndFunc".Оператор "Func" не имеет сопровождающий его оператор "EndFunc"
Duplicate function name.Дубликат имени функции (Одна и та же функция встречается в скрипте дважды)
Unknown function name.Неизвестное имя функции (Вызов отсутствующей функции)
Unknown macro.Неизвестное имя макроса (опечатка или устаревший макро)
Unable to execute the external program.Не удается выполнить внешнюю программу.
Unknown option or bad parameter specified.(?) Неизвестный параметр или плохо указанного параметра.
Unable to load the internet libraries.(?) Не удается загрузить библиотеки Интернет
Unable to open file, the maximum number of open files has been exceeded.Не удается открыть файл, превышено максимальное количество открытых файлов.
Invalid file handle used.Используется неверный дескриптор файла
Invalid file filter given.(?) Неверно задан файловый фильтр
Expected a variable in user function call.Ожидается переменная при вызове пользовательской функции. Пример Func _FuncName(ByRef)
"Do" statement has no matching "Until" statement.Оператор "Do" не имеет сопровождающий его оператор "Until"
"Until" statement with no matching "Do" statement.Оператор "Until" не имеет сопровождающий его оператор "Do"
"For" statement is badly formatted.Оператор "For" имеет неправильный формат
"Next" statement with no matching "For" statement.Оператор "Next" не имеет сопровождающий его оператор "For"
"ExitLoop/ContinueLoop" statements only valid from inside a For/Do/While loop.Операторы "ExitLoop/ContinueLoop" допускаются только внутри циклов For/Do/While.
"For" statement has no matching "Next" statement.Оператор "For" не имеет сопровождающий его оператор "Next"
"Case" statement with no matching "Select"or "Switch" statement.Оператор "Case" не имеет сопровождающий его оператор "Select" или "Switch"
"EndSelect" statement with no matching "Select" statement.Оператор "EndSelect" не имеет сопровождающий его оператор "Select"
Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.Уровень рекурсии был превышен, AutoIt завершает работу, чтобы предотвратить переполнение стека
Unable to access RunAs API.Не удается получить доступ RunAs API
String missing closing quote.Строка не содержит закрывающую кавычку
Unterminated string.Незавершенная строка
Badly formated variable or macro.Неправильный формат переменной или макро
This keyword cannot be used after a "Then" keyword.Это ключевое слово не может быть использована после ключевого слова "Then"
"Select" statement is missing "EndSelect" or "Case" statement.Оператор "Select" не имеет сопровождающий его оператор "EndSelect" или "Case"
"If" statements must have a "Then" keyword.Оператор "If" должен иметь ключевое слово "Then"
Cannot assign values to constants.Невозможно присвоить значения константе.
Cannot make existing variables into constants.Невозможно сделать существующие переменные в константы
Object referenced outside a "With" statement.Объект ссылается за пределами оператора "With".
Nested "With" statements are not allowed.Вложенные операторы "With" не допускается
Variable must be of type "Object".Переменная должна быть типом "Object"
The requested action with this object has failed.Запрашиваемое действие с этим объектом не удалось
Variable appears more than once in function declaration.(?) Переменная появляется более одного раза в объявлении функции
ReDim array can not be initialized in this manner.ReDim массива не может быть выполнен таким способом. Пример ReDim $arr1[1] = [1]
An array variable can not be used in this manner.Переменная массива не может быть использована таким образом.
Can not redeclare a constant.Невозможно декларировать константу повторно
Can not redeclare a parameter inside a user function.Невозможно объявить переменную, переданную как параметр внутри пользовательской функции.
Can pass constants by reference only to parameters with "Const" keyword.Можно передавать константы как ссылки только на параметры с ключевым словом "Const". Например _FuncName(ByRef $w)
Can not initialize a variable with itself.текст
Incorrect way to use this parameter.Неправильный способ использования этого параметра
"EndSwitch" statement with no matching "Switch" statement.Оператор "EndSwitch" не имеет сопровождающий его оператор "Switch"
"Switch" statement is missing "EndSwitch" or "Case" statement.Оператор "Switch" не имеет сопровождающий его оператор "EndSwitch" или "Case"
"ContinueCase" statement with no matching "Select"or "Switch" statement.Оператор "ContinueCase" не имеет сопровождающий его оператор "Select" или "Switch"
Assert Failed!Утверждение неудачно!
AutoIt has encountered a fatal crash as a result of:\r Unable to execute DLLCall.AutoIt столкнулся с фатальным крахом в результате осуществления: не удается выполнить DLLCall
Obsolete function/parameter.Устаревшая функция / параметр
Invalid Exitcode (reserved for AutoIt internal use).Недопустимый Exitcode (зарезервировано для внутреннего использования AutoIt).
Cannot parse #includeНе удается выполнить разбор #include
Error opening the fileОшибка при открытии файла (при несуществующем #include-файле)