📣 더 깊은 내용이 담긴 '프날 오토핫키 강좌 v2'의 서적판이 공개되었습니다.
가장 최신의 오토핫키를 담은 '프날 오토핫키 강좌 v2'를 책으로 만나보세요!
v2 페이지에 공개된 분량보다 더욱 깊은 내용을 처음이라도 괜찮아, 오토핫키 프로그래밍을 통해 배울 수 있습니다.
전국 온/오프라인 서점에서 만나요!
책 더 알아보기 및 구매하기
Loop, Parse. 매개변수까지 통째로 제목에 넣는 경우가 거의 없었습니다. (Gui, Submit, NoHide 말고 또 있나요?)
Loop와의 구별을 두기 위해 이렇게 두었습니다. 사실 Loop는 이런식으로 확장판이 몇 가지가 더 있는데, 강좌에서는 이것만 설명합니다.
문자열을 끊어서 읽어주는 Loop, Parse
Loop, Parse 구문은 어떠한 문장을 받아서, 특정 문자열을 기준으로 하여 끊어 읽어주는 역할을 합니다.
Loop, Parse, InputVar [, Delimiters, OmitChars]
- Parse: Loop의 확장판 중 Parse를 사용한다는 의미입니다. Loop, Parse를 한 구문으로 외워두세요. 굳이 따지면 매개변수이긴 합니다. Loop, Parse를 명령어로, InputVar를 첫 번째 매개변수처럼 생각하셔도 무방합니다. (정확한 것은 아니지만요.)
- InputVar: 문장이 담긴 변수를 써줍니다. 변수를 쓰는 칸이기 때문에 %기호를 쓰지 않습니다.
- Delimiters: 어떤 문자열로 구분할 지 적어줍니다.
OmitChars 매개변수는 설명드리지 않겠습니다. (잘 사용되지 않습니다.)
어렵지요. 예제를 보는 게 좋겠습니다.
예제
var := "동해물과 백두산이 마르고 닳도록"
Loop, Parse, var, %A_Space%
MsgBox, %A_LoopField%
복잡하게 보시지 말고, 부분 부분을 끊어서 봅시다.
- 첫 번째 줄: 여기는 이해가 되시죠? var 변수에 애국가 첫 소절을 담았네요.
- 두 번째 줄: 지금 배우고 있는 Loop, Parse구문입니다. var변수를 받는다는 뜻입니다. %A_Space%는 아래에 설명 드릴게요.
- 세 번째 줄: %A_LoopField%를 출력하네요. 이 또한 아래에서 설명드리겠습니다.
내장변수 두 개가 새로 나왔네요. A_Space는 "스페이스 바로 입력하는 공백"을 의미하고, A_LoopField는 Delimiters 매개변수로 구분된 문자열이 담기는 일종의 출력 변수입니다. FileReadLine의 OutputVar과 동일한 역할이지요.
즉, 변수 var의 내용을 공백으로 구분하면 각 부분이 A_LoopField에 차례로 담깁니다. 이를 메시지박스로 출력하는 스크립트입니다.
역시 직접 실행시켜보시면 감이 잡히실겁니다.
반복문이 진행될 때마다 A_LoopField의 값이 동해물과/백두산이/마르고/닳도록으로 변하는 모습을 볼 수 있습니다.
이번엔 지난 번에 배운 FileRead를 응용해보겠습니다.
FileRead, var, 애국가.txt
Loop, Parse, var, `n
MsgBox, %A_LoopField%
이스케이프 시퀀스는 문자열 취급한다고 했었죠? 개행을 기준으로 A_LoopField의 값이 변하겠네요.
애국가.txt엔 애국가 1절이 있습니다.
FileReadLine보다 깔끔하고 빠르게 모든 줄을 읽어올 수 있는 방법입니다. FileReadLine은 한 번 수행시마다 파일 전체를 읽어오므로 모든 줄을 반복문 + FileReadLine으로 읽어오면 (줄 수) * (파일 한 번 여는데 걸리는 시간) 만큼 소요되지만, 위와 같이 FileRead를 한 후 한 줄씩 Loop, Parse로 끊어서 읽으면 파일을 한 번만 읽으면 되죠.
꼭 공백이나 이스케이프 시퀀스가 아니더라도, 아래처럼 특정 문자열로 끊을 수도 있습니다.
var := "동해물과프백두산이프마르고프닳도록"
Loop, Parse, var, 프
MsgBox, %A_LoopField%
"프"라는 문자열로 끊어준 모습을 볼 수 있습니다.
사실 90%는 이 명령어를 `n을 기준으로 끊는 데 사용할 것입니다. (FileReadLine을 대체하기 위해서입니다.)
그러므로 두 번째 예제를 제일 잘 봐주시면, 나중에 분명 쓸 일이 있을겁니다.
까다로운 구문이니 많이 사용해보세요.
< 67. FileRead(Line) | 68. Loop, Parse | 69. 종합 프로그래밍 문제 Part.2 >
⚠ 이 강좌는 오토핫키 v1을 다룹니다
지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.