Language Reference - Datatypes

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になります。

 

数値

24.566-7といった標準的な10進数。  

科学的表記法がサポートされています。1500と書くかわりに1.5e3と書くことができます。  

接頭辞0xによって0x4090x4fffのように 整数を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変数は置換されます。

 

ブール値

ブール値とは論理値です。ブール値truefalseの2種類のみです。

andornotと併用して変数に代入することができます。

例:
$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ビット数に対してしか機能せず、自動で変換がおこなわれます。 これらの関数についてはドキュメントに記載されています。