Autoit 入門書

Autoit の基礎 – 変数、定数

変数、定数

変数

変数とは、データを一時的に記憶しておくための領域です。

変数=フォルダーと例えると分かりやすいかと思います。

この変数に固有の名前を付けたものを変数名と呼び、記憶されているデータをその変数の値と呼びます。

Autoit で変数名を付ける場合、名前の先頭には必ず「$」を付け、使用できる文字は英数字、アンダーバー(_)のみです。

変数名の先頭に数字は指定できません。

例:

  • 〇 $Autoit3
  • ✕ $3Autoit

変数値は固定されていないので、プログラム中で何度も値を変更することができます。

変数(フォルダー)の中のデータ(ファイル)は、何度でも入れ替えをすることが出来る。

配列を作成する場合、Dim、Local、Global のいずれかを使用して変数を宣言しなければなりません。

  • Dim = 同名のグローバル変数がなければローカル(有効範囲が制限される)変数になります。
  • Local = ローカル または 関数内(関数内でのみ有効)変数。
  • Global = グローバル(すべての範囲で有効)変数。

これら Dim/Local/Global 3つのキーワードがありますが、主に使用するのは「Global」と「Local」です。

場所により使用する変数を使い分けましょう。

Dim $AA[2] = ["1","3"]
;~ Local  $AA[2] = ["1","3"]
;~ Global $AA[2] = ["1","3"]

MsgBox(0, '', $AA[0])

※注意事項

例えば次のコードですが、大文字と小文字の同名の変数が存在する場合、メッセージボックスで表示される結果は「6」となります。

Autoit での変数名は、大文字と小文字は区別せず、同じものだと認識します。

$aa = 5
$AA = 6

MsgBox(0, '', $aa)

定数

定数とは、簡単に言うと値の変更できない変数です。

例えると、フォルダー(変数)の中に読み取り専用のファイル(データ)を作成するというのに似ていますね。

このデータは一度指定すると書き換えが出来ず、読み取ることしかできません。

そして、既に存在する変数を定数に変更することもできません。

定数は、通常キーワード Const を使用して宣言します。

Const で定数を宣言する場合は必ず値の代入をします。

例えば次のコードですが、Const で宣言した変数に「6」を代入しています。

その後に $AA = 5 というように「5」を代入しようとしても「Const」で宣言されているため、値の変更ができません。

Const $AA = 6
$AA = 5

MsgBox(0, '', $AA)

または、キーワード Enum を使用して宣言することもできます。

次のコードは Const と同様に値を変更することができません。

Enum $E1VAR1 = 3
$E1VAR1 = 2

MsgBox(4096, "", "Expect 0: " & $E1VAR1)

Const と違い、Enum は値を初期化することができます。

Global Enum $E1VAR1, $E1VAR2, $E1VAR3
MsgBox(4096, "", "Expect 0: " & $E1VAR1)
MsgBox(4096, "", "Expect 1: " & $E1VAR2)
MsgBox(4096, "", "Expect 2: " & $E1VAR3)

Global Enum $E2VAR1 = 10, $E2VAR2, $E2VAR3 = 15
MsgBox(4096, "", "Expect 10: " & $E2VAR1)
MsgBox(4096, "", "Expect 11: " & $E2VAR2)
MsgBox(4096, "", "Expect 15: " & $E2VAR3)

Global Enum Step *2 $E3VAR1, $E3VAR2, $E3VAR3
MsgBox(4096, "", "Expect 1: " & $E3VAR1)
MsgBox(4096, "", "Expect 2: " & $E3VAR2)
MsgBox(4096, "", "Expect 4: " & $E3VAR3)

Enum の便利な使い方

例えば Dim $arr[3] = [“ユーザー名”, “パスワード”, “メールアドレス”] というように配列を定義します。

すると配列内のデータは次のようになります。

  • $arr[0] = “ユーザー名”
  • $arr[1] = “パスワード”
  • $arr[2] = “メールアドレス”

これでもいいのですが、$arr[0] が “ユーザー名” ・・・少し覚えにくいと思いませんか?

Enum を使うと次のように $arr の何番目がユーザー名などと覚えずに、$arr の中の $ID がユーザー名というように覚えやすくなります。

Dim Enum $ID, $PW, $email
Dim $arr[3] = ["ユーザー名", "パスワード", "メールアドレス"]

MsgBox(0, "", "$arr[0]=" & $arr[0] & @CRLF & "$arr[$id]=" & $arr[$ID])
MsgBox(0, "", "$arr[1]=" & $arr[1] & @CRLF & "$arr[$pw]=" & $arr[$PW])
MsgBox(0, "", "$arr[2]=" & $arr[2] & @CRLF & "$arr[$email]=" & $arr[$email])

コメント