티스토리 뷰

반응형

안녕하세요. 오토핫키로 프로그램을 자주 코딩하는데, for문의 활용이 제한적인 오토핫키에서는 자주 사용하는 loop에서 다중, 이중으로 사용할 수 없는 것에 대해서 알아보다가 함께 공유할 내용이 있어 올려봅니다.

결론적으로 오토핫키에서는 이중루프가 불가는한데, 이유는 A_index라는 것이 중첩으로 사용하면 오류가 발생하는 구조라서 그렇습니다. 

그래서 아래와 같이 코딩하면 생각하지 못한 결과가 나오지요. 이중/다중 loop 사용한 코딩

loop % count1 {
  loop % count2 {

   ..... (중략)

  }
}

이 구조는 A_index가 중첩으로 들어가니, 오토핫키의 프로그램이 어버버하는 결과가 나오는 것이죠.

그렇다면 해결법은?

함수를 중간에 끼워 넣는 방법으로 해결할 수 있습니다. 좀 번거롭긴 하지만, 문제가 해결된다는 것은 좋은 것이지요.

loop % count1 {
  function()
}

function() {
  loop % count2{}
}

실전에서 사용하는 예를 한번 보자구요.

filename := ["autohotkey","autocad","webmail"]
dir := ["work","program"]
count1:=1
count2:=1
  msgbox % filename.length()
  msgbox % dir.length()
loop, % filename.length() {
  msgbox % filename[count1]
  loop, % dir.length() {
   msgbox % dir[count2]
    ++count2
  }
  ++count1
  count2:=1
}



참고로, 변수를 아래와 같이 따로 사용해서 loop문을 구성하면 잘 됩니다. 다중 루프 그리 어렵지는 않습니다.

이 구조도 프로그램을 돌리면 잘 돌아합니다. . A_index에만 안묶이면 되는거가 핵심사항입니다.

 

반응형
댓글