오토핫키 줄 바꿈 - otohaski jul bakkum

//youtu.be/NY4j3AYleG0

지난번에 FileSetting을 저장하고 읽어 오는 스크립트를 소개할 때 오류가 있었습니다.

우선 줄바꾸기를 나타내는 내용이 `r`n인데 `n만 표시하여 실제 그 스크립트로 동작을 시키면 일부 동작이 제대로 수행되지 않는 경우가 발생했을 것입니다. 이것을 해결하기 위해서는 `n대신에 `r`n을 사용하면 됩니다.

가장 치명적인 경우가 설정치에서 읽은 내용에 추가로 다른 내용을 덧붙일 경우입니다. 그 경우 `r이 동작 하면, 어떤 경우(대표적으로 cmd창에서 명령을 입력하는 경우)에는  명령이 2가지로 분리되어 전달되는 경우가 발생가능합니다.

따라서 그럴일이 없도록 `r`n을 합쳐서 StrSplit을 수행하던지, `n만 가지고 StrSplit 한 결과를 가지고 정상적으로 처리하게 만드는 방법이 있습니다. 여기서는 `r`n을 분리문자롤 사용하도록 하겠습니다.

StrSplit에서 옵션의 순서는 다음과 같습니다.

결과값 :=StrSplit(입력값,[":","`r`n"])

여기에서 분리할 문자로 사용할 내용을 배열로 주는데 첫번째는 :로 줬고, 두번째는 `r`n으로 줬습니다. 이렇게 진행하면 이후에 결과값에 이상한 내용이 들어갈 일이 없습니다. 하지만 기존에 공유드린 내용으로 하면 분명히 문제되는 경우가 있었을 것입니다. 하지만 얘기하신 분이 없는 것으로 봐서는 해당 내용 그대로 처리하지는 않은것 같아 다행입니다.

다음은 GuiClose()에 대한 내용입니다. 이 부분을 그동안 안 넣다 보니, 프로그램을 종료했다고 생각했는데 trayicon에 남아 있는 경우가 많았을 것입니다. 아래처럼 GuiClose루틴을 넣으면 말끔히 해결됩니다.

GuiClose:
{
ExitApp
}
return

일부만 달라졌으므로 게시안해도 되겠죠? 그래도 넣어 드릴까요? 알겠습니다. 넣습니다.

FileSettingV1.2.ahk

0.00MB

LearningNote

오토핫키

[오토핫키] 변수와 표현식(2)

LN 2020. 6. 30. 23:11

[오토핫키] 변수와 표현식(2)

표현식으로 변수를 어떻게 사용하는지

다양한 방법으로 실습해보겠습니다.

전에 배웠던 내용도 일부 포함되어 있으니 복습도 함께 해보세요.

바로 예제로 들어가겠습니다.

준비된 예제는 국어, 영어, 수학의 점수를 변수에 담아두고,

각 과목의 점수 및 총점과 평균을 메시지 박스에 출력하는 예제입니다.

다음의 코드를 작성해보세요.

!3:: kor := 100 eng := 80 math := 90 tot := kor + eng + math avg := tot / 3 MsgBox, 국어 점수는 kor 입니다. ; (x) MsgBox, 국어 점수는 %kor% 입니다. ; (o) MsgBox, % "영어 점수는 " %eng% " 입니다." ; (x) MsgBox, % "영어 점수는 " eng " 입니다." ; (o) MsgBox, % "수학 점수는 " + kor + " 입니다." ; (x) MsgBox, % "수학 점수는 " . kor . " 입니다." ; (o) MsgBox, "국영수 총점은 " %tot% " 입니다." ; (x) MsgBox, % "국영수 총점은 " tot " 입니다." ; (o) MsgBox, 국영수 평균은`n%avg% 입니다. ; 줄바꿈 기호(`n) MsgBox, 국영수 평균은`t%avg% 입니다. ; 탭 기호(`t) return

국어는 100점, 영어는 80점, 수학은 90점을 각 변수에 대입하였습니다.

tot 변수에는 국영수 총점을 계산하여 대입하였으며,

연산자는 더하기(+) 기호를 사용하였습니다.

avg 변수에는 국영수 총점을 세 과목으로 나누어 평균값을 대입하였습니다.

이미 총점을 계산하여 담아놓은 변수인 tot 가 있기 때문에 tot 를 과목수 3으로 나누었습니다.

연산자는 나누기(/) 기호를 사용하였습니다.

국어 점수부터 살펴볼게요.

출력을 원하는 형태는 이렇습니다.

국어 점수는 100 입니다.

실행해보시면 아시겠지만, 첫 번째 메시지 박스는,

점수 대신 kor 이라는 변수명이 그대로 나타납니다.

국어 점수 출력 예제

변수값을 꺼내오려면 '%' 기호가 있어야겠죠.

그래서 kor 변수의 양쪽에 '%' 기호를 감싸면 우리가 원하는 형태로 출력이 되는 것을 볼 수 있습니다.

MsgBox, 국어 점수는 kor 입니다. ; (x) MsgBox, 국어 점수는 %kor% 입니다. ; (o)

이번에는 영어 점수를 살펴보겠습니다.

출력을 원하는 형태는 이렇습니다.

영어 점수는 80 입니다.

변수 양쪽에 '%' 기호를 감싸는 것 대신,

명령어와 첫 번째 인자 사이에 '(공백) % (공백)' 을 넣었습니다.

이때 주의할 점은, 앞에서 '%' 기호를 사용하였을 때는,

그 뒤에서는 변수명에 '%' 기호를 감싸는 형태로 사용할 수가 없다는 점입니다.

MsgBox, % "영어 점수는 " %eng% " 입니다." ; (x) MsgBox, % "영어 점수는 " eng " 입니다." ; (o)

한번 실행해볼까요?

국어 점수에 대한 메시지 박스가 또 뜨면 귀찮기 때문에

끝난 메시지 박스가 있는 줄에서 Ctrl + q 핫키를 눌러 주석 처리하면서 해보세요.

영어 점수에 관련된 메시지 박스가 끝나면 뒤쪽 것은 당장 볼 것이 아니기 때문에

F4 키를 눌러 오토핫키를 종료하시고요.

영어점수에 대한 메시지 박스를 확인해보셨나요?

결과가 어떻게 달라지는지 천천히 살펴보시기 바랍니다.

영어 점수 출력 예제

다음은 수학 점수입니다.

출력을 원하는 형태는 이렇습니다.

수학 점수는 90 입니다.

마침표(.) 기호를 써서 문자열끼리 붙이는 방법입니다.

다른 프로그래밍 언어를 써보셨다면 다소 생소하실 것입니다.

보통 '+' 기호 또는 '&' 기호를 많이 쓰는데요,

오토핫키에서는 '.' 기호를 사용합니다.

때에 따라 붙임 기호를 아예 생략하기도 합니다.

MsgBox, % "수학 점수는 " + kor + " 입니다." ; (x) MsgBox, % "수학 점수는 " . kor . " 입니다." ; (o)
수학 점수 출력 예제

국영수 총점에서는 큰따옴표에 집중해서 살펴보시기 바랍니다.

우리가 원하는 출력 형태는 이렇습니다.

국영수 총점은 270 입니다.

MsgBox 명령어 바로 다음에 '%' 기호를 사용하지 않는다면,

큰따옴표를 굳이 붙이지 않아도 문자열로 인식이 됩니다.

따라서 큰따옴표를 붙인다면 그 기호마저도 출력해야 하는 문자열로 인식해버립니다.

각각의 출력 결과를 살펴보세요.

MsgBox, "국영수 총점은 " %tot% " 입니다." ; (x) MsgBox, % "국영수 총점은 " tot " 입니다." ; (o)
국영수 총점 출력 예제

국영수 평균 예제에서는 줄 바꿈 기호와 탭 기호를 어떻게 표현하는지 살펴보겠습니다.

물결 표시(~) 와 같은 키에 위치한 back quote(`) 를 오토핫키에서는 이스케이프(Escape) 문자라고 합니다.

이 이스케이프 문자 바로 다음에 오는 문자는 그 문자 그대로를 뜻하는 것이 아니라

특수한 용도로 사용이 된다고 컴퓨터에게 알려주는 역할을 합니다.

그 특수 용도의 기호는 약속되어 있습니다.

대표적인 것이

`n(줄 바꿈) 기호와 `t(탭) 기호입니다.

직접 실행해보시면 바로 어떤 기능을 하는지 알 수 있습니다.

MsgBox, 국영수 평균은`n%avg% 입니다. ; 줄바꿈 기호(`n) MsgBox, 국영수 평균은`t%avg% 입니다. ; 탭 기호(`t)
국영수 평균 출력 예제

소스 코드와 메시지 박스 출력 결과를 비교해가며

여러 번 실습해보시기를 권해드립니다.

실행 전에 결과를 먼저 예상을 해보시고,

예상과 실제 결과가 일치하는지 살펴보는 것이 효과적입니다.

더 깊이 생각을 하게 되고 더 빨리 익히게 될 것입니다.

다소 어렵게 느껴질 거라 생각됩니다.

변수를 사용하는 경우가 매우 많기 때문에

너무 조바심 갖지 마시고

사용할 때마다 자연스럽게 차곡차곡 내공을 쌓아가시면 됩니다.

고생 많으셨습니다.

다음의 사이트에서도 잘 설명되어 있으니 읽어보실 것을 추천드립니다.

//autohotkeykr.sourceforge.net/docs/Variables.htm#Expressions

Toplist

최신 우편물

태그