MsgBoxでの変数展開

変数展開

レガシーモード - %変数名%

Name := "Taro"
MsgBox, My Name is %Name%    ; => My Name is Taro
  • %変数名%で変数展開される

Expressionモード - % 変数名

Name := "Taro"
MsgBox, % Name                   ; (1) => Taro
MsgBox, % "My Name is " . Name   ; (2) => My Name is Taro
MsgBox, % "My Name is " Name     ; (3) => My Name is Taro
  • 先頭に%とスペースを空けるとExpressionモードになり、変数が自動的に展開される
  • 文字列を連結するには、(2)のように.ドットでつなげるか、(3)のように スペースでつなげる
  • 参考:https://www.autohotkey.com/docs/Variables.htm#Intro

エスケープ文字 - `バックスラッシュ

Name := "Taro"
MsgBox, `%Name`%                 ; (1) => %Name%
MsgBox, 0, 1, Hi`, %Name%, 1.0   ; (2) => Hi, Taro

変数の再代入

Name0 := "Taro"

Name1 := Name0
MsgBox, %Name1%   ; (1) Taro

Name2 = %Name0%
MsgBox, %Name2%   ; (2) Taro

Name3 = Name0
MsgBox, %Name3%   ; (3) Name0

Name4 := %Name0%
MsgBox, %Name4%   ; (4) 

Name5 := % Name0
MsgBox, %Name5%   ; (5) Taro
  • (1) Expressionモードは:=で代入する
  • (2) レガシーモードは=で代入する
  • 代入オペレータを間違うと(3)、(4)のように意図しない結果になるので注意する
  • (5) Expressionモードの% で代入するしてもいい
  • 参考:https://www.autohotkey.com/docs/Variables.htm#Intro

結論として

 FirstName := "Taro"
 LastName := "Yamada"
 FullName := FirstName . " " . LastName
 MsgBox, % "My Name is " . FullName       ; My Name is Taro Yamada
  • 常に:=で代入して、代入時には%変数名%で展開しない
  • MsgBoxを呼ぶときは% でExpressionモードを使う
  • のが混乱が少ないのではと思う

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2021-02-25 (木) 05:06:31