방개
비밀번호를 잊어버리셨나요?

질문

Loop, parse 뭐가 잘못된걸까요?

    • 글자 크기

먼저 숫자모음.log에는 아래내용이 담겨있고 스크립트와 같은 폴더에 있습니다.

13.png

 

 

 

 

스크립트 부분

123.png

로컬에 있는 파일을 불러와 '숫자담음'에 담고 loop,parse로 한줄씩 불러와

'비교숫자'와 비교해서 동일하면 발견이라고 msgbox를 띄우게 위처럼 코드를 작성했습니다.

 

그런데 사진처럼 코드를 입력하고 실행하였는데 계속 발견 msgbox를 띄우지않고 else로 넘어가네요. 

혹시 값이 다른가싶어 else쪽에는  A_LoopField와 '비교숫자'라는 변수를 msgbox로 띄었는데 둘이 보기에는 동일해보이네요.

 

3옆에 띄어쓰기 없고 혹시몰라 fileread 후에 msgbox, %숫자담음%하면 불러온파일도 정확히 메시지박스를 띄웁니다.

혹시 몰라 코드 첨부합니다...

도움부탁드려요

 

 

비교숫자 := "3"
FileRead, 숫자담음, 숫자모음.log
Loop, parse, 숫자담음, `n
{
    IF(A_LoopField = 비교숫자)
        MsgBox, 발견
    ELSE
        MsgBox, % A_LoopField "`n" 비교숫자
}
MsgBox, 종료
ExitApp

    • 글자 크기
댓글 3
  • 2020.11.14 22:20 댓글

    분명히 둘의 값이 같은데, 왜 조건문에 부합하지 않을까요?

    사실 둘의 값이 같지 않기 때문입니다.

     

    본문에 작성된 스크립트는 파일의 내용을 변수로 읽어오고,
    Loop, Parse 문을 이용하여,
    읽어온 변수를 `n(뉴 라인)을 기준으로 구분하고 있습니다.

     

    보이지는 않지만 각 라인에는 `n(뉴 라인)을 제외하고 또 다른 문자가 하나 있습니다.
    바로 `r(캐리지 리턴)인데요.

     

    `r(캐리지 리턴)은 커서의 위치를 맨 앞으로 이동시키는 역할을 하는데,
    구분된 각 문자열의 끝에는 이 `r(캐리지 리턴)이 존재하기 때문에

    조건문이 성립되지 않는 것입니다.

     

    각 라인의 순수한 문자열만을 얻기 위해서는

    Loop, Parse의 OmitChars에 `r(캐리지 리턴)을 추가하면 됩니다.

     

    아래를 참고하세요.

    targetValue := 3
    
    FileRead, logString, log.log
    
    Loop, Parse, logString, `n, `r
    {
    	if (targetValue = A_LoopField)
    		MsgBox %A_Index%번 줄에서 값을 찾았습니다.
    }

     

  • helper님께
    2020.11.14 23:08 댓글

    감사합니다

    이유를 몰랐었는데 ㅠㅠ

     

  • helper님께
    감자국글쓴이
    2020.11.15 04:27 댓글

    감사합니다. 몇일동안 끙끙 앓으면서 구글링했었는데 속이 시원하네요 ㅎㅎ

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...