반응형

 

Key Point
반복 작업을 위해서는 반복행위가 필요합니다.
조건을 걸고, 특정 조건을 성립하면 특정행동을 하고 다음 행동으로 가는
가장 기초적인 부분을 알려드릴 것입니다. 

 

 

 

위 사진을 간단하게나마 그려보았는데요

왼쪽은 Loop 오른쪽은 while 입니다. 

 

Loop / While 차이점
Loop 
특정 횟수나 범위를 정하여 코드를 반복 실행합니다.
예를 들어, loop, 5는 중괄호안에있는  코드를 10번 반복 실행합니다.

Loop,5
{
코드
}

 

while 
조건을 지정하여 해당 조건이 참(True)인 동안 코드를 반복 실행합니다. 

i = 0
while (i < 5) { 

MsgBox, % "i는 5보다 작습니다. 현재 값: " i 
i++ 

}

 

Loop

반복문을 넣고, 조건에 부합할때까지 넣을건가?

while

처음부터 조건을 걸고 거짓이 될 때까지 반복시킬건가?

 

 

 

가령 무한으로 반복 시키고싶다  라고 하면 둘다 동일하게 사용가능합니다
Loop,{
msgbox,% "현재 반복 횟수는 : " A_index " 입니다"
}
while (1){
    MsgBox,% "현재 반복 횟수는? " A_index " 입니다"
}

 

 

 

조건을 걸고 싶다
ver = 0
Loop,{
  if(ver >= 5){
	break
  }else{
	msgbox,% "현재 ver 값은 " ver " 입니다"
  }
  ver++
}
msgbox,끝
exitapp

테스트파일1.ahk
0.00MB

 

ver := 0
while (ver < 5){
    MsgBox, % "현재 ver 값은 " ver " 입니다"
    ver++
}
MsgBox, 끝
ExitApp

테스트파일2.ahk
0.00MB

 

반복문 탈출 ( 반복문에서 벋어나다)
Loop,{
msgbox, 한번만 반복하고 탈출하자!
break
}

msgbox,64,안내,탈출성공!

 

 

while 명령어와 loop 명령어 위와같이 조건을 걸때 보면 while 명령어가 더 좋아보이고 심플해보이지만,

결국 각상황에 맞게 사용할 수 있습니다.

조건은 loop나 while에 둘다 사용가능합니다 

 

Loop는 여러 상황에서도 사용될 수 있습니다. 

가령 listview의 항목중 "특정" 항목의 내용을 가져와서 조건에 부합하면 탈출하는 것도 가능합니다

 

#SingleInstance,force

title:= "테스트파일"
Gui, Add, ListView, x12 y9 w210 h300 vlist_a,no|이름
Gui, Add, Button, x12 y319 w210 h30 gmsg,메세지출력
Gui, Show, x612 y285 h365 w235,% title
	Lv_add(,"1","홍길동")
	Lv_add(,"2","김이박")
	Lv_add(,"3","김뚜레")
	Lv_add(,"4","정발산")
	Lv_add(,"5","홍인범")
	Lv_add(,"6","이순신")
Return
msg:
gui,submit,nohide
Loop,% LV_GetCount(){
	LV_GetText(Count,A_index,1)
	LV_GetText(name,A_index,2)
	if(name = "정발산"){
		msgbox,64,안내,% name " 님의 순서는 " Count " 번 째 입니다"
		break
	}
}


return
GuiClose:
ExitApp
return

listview_test.ahk
0.00MB

 

 

 

스크립트(ahk, exe실행파일) 이 있는 폴더안에 있는 텍스트 문서의 위치를 전체 취득하고싶다. 

#SingleInstance,force
Loop, %A_workingdir%\*.txt, 1, 1
    ver .= A_LoopFileLongPath "`n"

MsgBox, % "텍스트 파일들의 위치:" . "`n" . ver
exitapp

테스트.zip
0.00MB

 

간단한 몇줄로 하위 폴더내 텍스트 파일의 위치를 알 수 있습니다. 

조금더 해볼까요 ?

 

#SingleInstance,force
Loop, %A_workingdir%\*.txt, 1, 1
{
    FileRead,read_ver,% A_LoopFileLongPath
    msgbox,% "현재 파일위치는 : " A_LoopFileLongPath " 이며`n파일 내용은: " read_ver " 입니다"
}

exitapp

 

하위 폴더안 .txt 확장자를 가진 파일을 전체 확인하고

확인하는 족족 내용을 메세지박스에 위치랑, 내용을 표시하는 소스입니다.

 

 

이렇듯, Loop,와 while 문은 상황에 맞게 사용할 수있습니다.

반응형

+ Recent posts