※ 이 문서는 뭐 그냥 하면 되지. ()에서 인쇄하였으며,
저작권은 해당 블로그 운영자에게 있습니다.

오토잇(AutoIT) 오류 메시지(Error Message)와 해결 방법

/Autoit/AutoIt :: 2010. 8. 6. 12:42

오토잇(AutoIT) 오류 메시지(Error Message)와 해결 방법

오토잇(AutoIt Script)을 처음 접하시는 분들의 질문 중에 "안 돼요."라는 질문이 많이 있습니다. 그중에는 간단한 오류(에러, Error)만 수정하면 되는 경우가 많이 있습니다. 그래서 오류를 확인하는 방법과 오류 메시지, 그 해결법을 모아봤습니다. 여기에 나오지 않는 오류는 댓글로 알려주시면 확인해서 추가하겠습니다.

오토잇 오류 확인하기

오류 확인하기 전에 할 일
오타 확인 : 오타 때문에 생기는 오류가 태반입니다. 또 비슷한 이름의 함수나 변수 때문에 생기는 오류도 많으니 이에 주의해야 합니다.
소스 정렬: 메뉴의 도구 - Tidy AutoIt Source (Ctrl + T) 선택
띄어쓰기, 들여쓰기를 통해 소스를 보기 좋게 정렬해서 오류가 생기는 부분을 찾기 쉽게 하고, 일부 오류 코드를 찾아줍니다. (참고: SciTE4AutoIt3 도움말 우리말 번역본 - SciTE4AutoIt3 Tidy)

오류 확인하기(구문 검사)
코드 작성 후 메뉴의 도구 - SyntaxCheck Prod(Ctrl + F5) 선택
SciTE 아래 창에 검사 결과 출력됩니다.
F4를 누르면 오류 메시지가 나타나고 소스의 오류가 있는 곳으로 커서 이동합니다.
경우에 따라 윗줄에서 생긴 오류 때문에 아랫줄에 커서가 위치하는 때가 있으므로 해당 줄에 문제가 없다면 그 윗줄에서 오류를 찾아서 해결해야 합니다. (참고 : SciTE4AutoIt3 도움말 우리말 번역본 - SciTE로 AutoIt3 사용하기)

오류 메시지와 해결방법

ERROR: syntax error
구문 오류.
제일 흔한 경우고 오류가 생기는 이유도 너무 많습니다. 하지만 어렵지는 않은 오류입니다.
- 괄호가 빠졌을 때 (괄호는 커서로 선택하면 짝을 이루는 괄호가 표시됩니다. 이를 이용하면 빠진 괄호를 찾을 수 있습니다.)
- 짝을 이루는 키워드가 빠지거나 순서가 바뀐 경우(If... Else... EndIf, For... Next, While... WEnd 등)
- 잘못된 매크로
- 잘못된 연산자
- 완전하지 않은 문장

Array variable has incorrect number of subscripts or subscript dimension range exceeded.
배열의 크기, 차원과 맞지 않은 값을 사용.
배열의 크기가 작으면 ReDim을 이용해 배열의 크기를 크게 해줍니다.
간단히 말해서 배열은 데이터를 저장하는 방입니다. 방이 5개 있는 배열에는 방 번호가 0번부터 4번까지입니다. 따라서 방 번호가 5인 방에서 데이터를 꺼내려 한다면 오류가 생깁니다. 5번 방은 없으니까요. 실제 존재하는 방 번호에서만 데이터를 추출할 수 있도록 수정해줍니다.

Subscript used with non-Array variable.
배열이 아님.
배열이 아닌 변수에서 값을 추출하려 할 때 생깁니다. 값을 추출하기 전에 배열인지 아닌 지 검사하는 구문을 추가해서 오류를 해결할 수 있습니다. 또는 배열을 만드는 부분에서 오류가 생겨서 배열이 제대로 만들어지지 않았을 수도 있습니다. 배열이 제대로 생성되도록 수정해야 합니다.

WARNING: $var: possibly used before declaration.
변수가 선언되지 않음.
변수를 사용하기 전에 변수를 선언하고 필요하면 값도 함께 넣어줍니다. GUI를 만들 때 사용되는 변수들은 GUIConstantsEx.au3 등에 포함되어 있으므로 이를 include 해줍니다.
보기. WARNING: $GUI_EVENT_CLOSE: possibly used before declaration.라는 오류가 나오면 소스 제일 위쪽에 #include <GUIConstantsEx.au3>라고 적어줍니다.

WARNING: $var possibly not declared/created yet.
선언되지 않은 변수를 사용.
위와 같은 경우입니다.

ERROR: $var previously declared as a 'Const'.
변수가 Const로 선언되어 있음.
Const로 선언된 변수(상수)는 값을 바꿀 수 없으나 새로운 값을 대입하려 했을 때 생기는 오류
- 대입하려는 값이 같을 때 : 오류가 나는 줄을 주석처리하거나 삭제하세요. 대개 include된 파일에서 선언된 변수를 본 소스에서 다시 한 번 선언하려 할 때 생깁니다.
- 값이 다를 때 : 처음 변수를 선언한 부분에서 Const를 삭제

ERROR: _Function() already defined
같은 함수를 두 번 정의함.
이름이 같은 함수가 있으므로 이름을 서로 다르게 해줘야 합니다. 같은 함수를 두 번 사용했다면 하나를 삭제해야 합니다.

ERROR: _Function(): undefined function.
정의되지 않은 함수를 호출, 사용
사용하려는 함수가 정의되어 있지 않으므로 함수를 만들어 주거나 함수가 있는 라이브러리를 include 해줍니다.
보기. ERROR: _ArrayDisplay(): undefined function. 이라는 오류가 나오면 소스 제일 위쪽에 #include <Array.au3>라고 적어줍니다.

ERROR: Unkown function name.
함수을 알 수 없음.
위와 같습니다.

ERROR: Function() [built-in] called with wrong number of args.
함수의 인수 개수가 틀림.
함수에 커서를 놓고 F1을 누르면 도움말 페이지가 열립니다. 이 도움말 페이지에서 함수에 필요한 인수 개수를 알 수 있습니다. [ ]로 되어 있는 인수는 생략할 수 있습니다.
보기. MsgBox(flag, "title", "text"[, timeout] [, hWnd])
3~5개의 인수가 필요한데, 2개 이하 또는 6 이상의 인수를 적으면 오류가 나옵니다.

실행할 때 나오는 오류메시지

아래 오류 메시지는 구문 검사에서는 나오지 않고 실제 실행할 때 나오는 오류 메시지 입니다.

error:unable to execute the external program.
외부 프로그램을 실행시킬 수 없음.
Run 또는 Shellexecute 함수에서 사용한 프로그램의 경로가 올바르지 않거나 해당 경로에 파일이 없을 때 생기는 오류입니다. 정확한 경로를 적어주면 됩니다.

ERROR: multi-line 'If' missing 'Then'.
ERROR: sing-line 'If' missing 'Then'.
"if" statements must have a "Then"keyword
If 문에서 Then이 빠져있습니다.
If 문을 사용한 곳의 명령문 앞에 then을 넣어줍니다.

 

오류 메시지만 잘 확인해도 소스가 잘 실행되게 만들 수 있습니다. 어려운 영어도 아니고 항상 같은 양식이기 때문에 몇 번만 해보면 금방 해결할 수 있으니까 너무 겁먹지 마세요.

관련글

SciTE4AutoIt3 도움말 우리말 번역본 - SciTE4AutoIt3 Tidy
SciTE4AutoIt3 도움말 우리말 번역본 - SciTE로 AutoIt3 사용하기
Include 파일 자동으로 추가하기

블로그의 글과 그림, 첨부파일의 복제, 재배포를 금지합니다. =>  자세히 보기
티스토리 초대장 필요하신 분은 댓글남겨주세요.
give start - 굿네이버스 - 사랑의 열매 - 아름다운재단 - 어린이재단 - 유니세프
굿네이버스 배너
사랑의 열매 배너
아름다운 재단 배너 어린이 재단 배너 유니세프 한국위원회 - 배너