AutoItではデータ型はバリアントと呼ばれる1つしかありません。 バリアントは数値もしくは文字列データを保持することができ、データをどのように扱うか は使用時の状況によって決められます。 例えば、2つのバリアントを掛け合わせようとすれば 数値として取り扱われ、2つのバリアントを連結しようとすれば文字列として扱われます。
いくつかの例:
10 * 20 は数値の200になります。 (* は2つの数を掛け合わせるのに使われます。)
10 * "20" は数値の200になります。
"10" * "20" は数値の200になります。
10 & 20 は文字列の"1020"になります。 (& は文字列連結に使われます。)
文字列が数値として使用された場合は暗黙的にNumber()関数の呼び出しが行われます。 さらにもし有効な数値が格納されていない時には0とみなされます。 例えば、
10 * "fgh" は数値の0になります。
空文字列"" がブール値として扱われた場合、Falseとみなされます(下記参照)。 例えば
NOT ""はブール値のtrueになります。
2、4.566、-7といった標準的な10進数。
科学的表記法がサポートされています。1500と書くかわりに1.5e3と書くことができます。
接頭辞0xによって0x409や0x4fffのように 整数を16進数表記で表現できます(16進数表記では32ビットの数までが有効です)。
文字列は"this"のようにダブルコーテーションで囲みます。 ダブルコーテーションを含む文字列の場合は、"here is a ""double-quote"" - ok?" のように2重に使います。
'this'や'here is a ' 'single-quote' ' - ok?'の ようにして同様にシングルコーテーションを使用できます。
2重のコーテーションを排除しより簡単にするために2種類のコーテーションを混ぜて使うことも できます。 例えば文字列でたくさんのダブルコーテーションを使いたい場合、 シングルコーテーションを文字列の宣言に使うことができます。
'This "sentence" contains "lots" of "double-quotes" does it not?'
は
"This ""sentence"" contains ""lots"" of ""double-quotes"" does it not?"
よりシンプルです。
Opt()での設定に従って 評価時に文字列内のEnv変数とVar変数は置換されます。
ブール値とは論理値です。ブール値trueとfalseの2種類のみです。
and、or、notと併用して変数に代入することができます。
例:
$Boolean1 = true
$Boolean2 = false
$Boolean3 = $Boolean1 AND $Boolean2
$Boolean3の結果は false になります。
$Boolean1 = false
$Boolean2 = not $boolean1
$Boolean2の結果は true になります。
ブール値が数値と一緒に使用された場合、次のルールが適用されます。
値0はブール値falseと同値
その他の数値はブール値trueと同値
例:
$Number1 = 0
$Boolean1 = true
$Boolean2 = $Number1 and $Boolean1
$Boolean2の結果は false になります。
ブール値を計算で使用した場合(おすすめしません!)、次のルールが適用されます。
ブール値trueは数値1に変換されます。
ブール値falseは数値0に変換されます。
例:
$Boolean1 = true
$Number1 = 100
$Number2 = $Boolean1 + $Number1
$Number2の結果は数値101 になります。
文字列をブール値と一緒に使用した場合、次の変換がおこなわれます。
ブール値trueは文字列"True"になります。
ブール値falseは文字列"False"になります。
例:
$Boolean1=true
$String1="Test is: "
$String2=$String1 & $Boolean1
$String2の結果は文字列"Test is: True"になります。
反対は成り立ちません。文字列をブール値と比較する場合、次のルールが適用されます。
空文字列("") はブール値falseとなります。
その他の文字列は("0"を含め)ブール値trueになります。
バイナリ型は任意のバイト値を保持できます。これらは文字列変数に格納される際には
16進数表現に変換されます。
例:
$bin = Binary("abc")
$str = String($bin)
; "0x616263"
ポインタ型は32ビットまたは64ビットのメモリアドレスを保持します。どちらになるかはAutoItの32ビット版が使用されているか、64ビット版が使用されているかに依存します。 これらは文字列変数に格納される際には16進数表現に変換されます。 WinGetHandleから返されるウィンドウハンドル(HWnd)はポインタ型です。
以下の表に内部バリアントのデータ型とその範囲を示します。
サブデータ型 | 範囲と注意 |
Int32 | 32ビット単精度整数 |
Int64 | 64ビット単精度整数 |
Double | 倍精度浮動小数点数 |
文字列 | 文字列には2147483647文字まで保持可能。 |
バイナリ | バイナリデータ。2147483647バイトまで保持可能。 |
ポインタ | メモリアドレスポインタ。 32ビットまたは64ビット。使用されているAutoItのバージョンに依存します。 |
いくつかのAutoItの関数(例えばBitAND) は32ビット数に対してしか機能せず、自動で変換がおこなわれます。 これらの関数についてはドキュメントに記載されています。