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

질문

25강 구구단 관련 질문드립니다

    • 글자 크기

안녕하세요?

강의를 보고 구구단을 연습해보다가 질문이 생겨 글 남깁니다.

 

메시지박스에 코드를 아래와 같이 작성하니 A*B가 곱한 값으로 표시되지 않고 

5*1, 5*2, 5*3 등으로 표시가 되더군요.

msgbox, %a% × %b% = %a% * %b%

 

답안에 올려주신 % a * b 형식이 아닌 %a% * %b% 형식에서

5, 10, 15 등으로 표시되게 하기 위해서는 어떻게 해야 하는지 궁금합니다.

 

좋은 강의 감사드립니다.

RPA
    • 글자 크기
댓글 2
  • 2021.1.4 16:01 댓글

    오토핫키에선 표현식과 전통식이라는 '변수와 연산자에 대한' 두 개의 해석 방식이 있습니다.

     

    '표현식'으로 해석한다는 뜻은, 컴퓨터가 소스코드의 해당 부분을 '수식'으로 판단한다는 것이고, 이 경우 문자 그대로 해석되어야 하는 부분은 큰 따옴표로 감싸서 표현해줍니다.

     

    '전통식'으로 해석한다는 뜻은, 컴퓨터가 소스코드의 해당 부분을 '문자 그대로' 해석한다는 뜻입니다. 이 경우 변수는 %기호로 감싸서 표현해줍니다. %var%와 같이요.

     

    MsgBox의 Text 매개변수는 전통식 자리입니다. 즉, 그 위치에 적는 스크립트는 '문자 그대로' 해석하게 됩니다. 그래서 *기호가 곱하기 연산이 아닌 문자 그대로 해석이 된 것이죠.

     

    그러면 문제가 생깁니다. 전통식 자리에서 연산을 하려면 어떻게 해야할까요?

     

    과거에는 대입식을 하나 더 만들어서 별도로 썼습니다. 아래와 같이 말입니다.

     

    var := a * b

    MsgBox, %var%

     

    그래서 질문자님처럼 MsgBox에 전통식을 사용하여 표현해 줄 경우 이렇게 하시면 됩니다. 그런데, 스크립트가 두 줄로 늘어지기 때문에 사람들은 다른 방법을 원했습니다. 그래서 나온게 강좌의 정답으로 나온, % 기호를 한번만 써주는 방법입니다.

     

    어떠한 매개변수의 처음에 %를 써주고 한 칸 띄워준다면, "이 매개변수는 전통식 자리임에도 불구하고 표현식으로 해석한다"를 의미합니다. 즉, MsgBox의 Text 매개변수를 '표현식'으로 해석하게 됩니다.

     

    따라서 MsgBox, % ~~~~ 처럼 써준다면.

    ~~~~ 부분은 '수식'으로 판단되게 되는것이지요. 문자열을 그대로 표현하려면 큰 따옴표로 감싸면 되는것이고요.

     

    오토핫키는 변수 표현 방식 자체가 심하게 갈라져있습니다. 하나로 통일하자니 하위호환성을 완전히 버려야하기 때문이죠. 그래서 이런 애매한 문제들이 발생하게 됩니다.

     

    가까운 미래의 나중 버전에선 하위호환을 버리고 통일성을 챙겨간다고 하니, 기대해봐도 되겠네요. 

  • 프날님께
    RPA글쓴이
    2021.1.5 21:52 댓글

    이렇게 자세히 답글을 달아주시다니 정말 감사드립니다.

    덕분에 궁금증이 해소되었습니다.

    새해 복 많이 받으세요 ^^

댓글 달기

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