2016-09-13 3 views
0

#include 파일에서 줄 번호와 스크립트 이름을 포함하는 디버그 메시지를 출력하려고하지만 @ScriptLineNumber 매크로가 #include 파일의 줄 번호를 내보내는 동안 에서 현재 파일의 파일 이름을 내보내는 방법은 없습니다.현재 스크립트 이름을 내보내는 AutoIT 사용자 매크로

_DebugOut ("+++ :"& @ThisScriptName & ":"& @ScriptLineNumber & "텍스트")

이 같은 디버그 메시지 @ThisScriptName 같은 사용자 매크로 무엇인가를 정의하고 싶습니다

출력은 다음과 같이 보일 것입니다 :

+++ : SampleIncludedFile.au3 : 127 :이 매크로 중 하나를 사용하여 포함 된 파일의 이름을 제공합니다 있도록이 작업을 수행 할 수있는 방법은 없습니다 일부 텍스트

+0

[현재 파일이 포함되어 있는지 또는 자체적으로 실행 중인지 찾기 위해 자동 스크립트에 방법이 있습니까?] (https://stackoverflow.com/questions/29540373/is-there-a-way -in-autoit-script-to-find-if-current-file-was-is-ru) – user4157124

+0

중복되지 않습니다. 이 링크는 코더가 #include인지 여부를 알아야하는 문제를 참조합니다. 내 질문은 @ScriptLineNumber가 행 번호에 대해 수행하는 것과 같이 현재 # include의 스크립트 이름으로 디버그 문을 생성하는 방법이었습니다. –

답변

0

유효한.

가장 쉬운 대안은 각 포함 파일의 맨 위에 덮어 쓰는 변수를 사용하는 것입니다.

ExampleScript.au3 :이 방법으로

; #include <...> 

Global $ThisScriptName = "ExampleInclude" 

ConsoleWrite("Hello From: " & $ThisScriptName & @LF) 

는 변수가 후 포함한 다른 파일을 을 정의하는 것이 중요합니다 :

#include "ExampleInclude.au3" 

Global $ThisScriptName = "ExampleScript" 

ConsoleWrite("Hello From: " & $ThisScriptName & @LF) 

ExampleInclude.au3.

다른 방법으로는 자신을 쓰거나 다른 사람이 이미 작성한 여러 가지 방법 중 하나를 사용하여 전처리기를 사용할 수 있습니다. @ThisScriptName의 모든 항목을 파일의 문자열 버전으로 바꾸는 것만 큼 간단 할 수 있습니다.

+0

나는 전처리기를 원한다고 생각한다. 내가 주위에 인터넷 검색 및 추가/전 처리기를 호출하는 방법에 대한 자습서를 찾을 수 없습니다. 누구든지 전처리기를 빌드/컴파일에 연결하는 방법을 알고 있습니까? –

+0

https://www.autoitscript.com/forum/topic/133808-autoit-with-c-preprocessor/ – Bookeater

+0

또한 "Global $ ThisScriptName = blablabla"는 여러 번이 아닌 한 번만 선언 할 수 있기 때문에 작동하지 않습니다 번 제안했다. –