4つのブールタイプは、Delphiで定義されています:Boolean、Bytebool、Wordbool、およびLongbool。最後の3つのブールタイプは、他の言語との互換性のために導入されています。
これらの4種類のブール値を占めるメモリの量は次のとおりです。
ブール1バイト
bytebool 1バイト
ワードブール2バイト(1つのワード)
ロングブール4バイト(2ワード)
Byteboolの場合、WordBoolとLongboolの3種類の真の定数の値は非ゼロであり、Falseはゼロであり、ORD関数によって検証できます。
ブールタイプの場合、真の定数の値は1、falseはゼロです。ブール値を期待するというコンテキストでは、コンパイラはBytebool、WordBool、およびLongboolの非ゼロ値をTrueに変換します。
ただし、Boolean ExpressionsとInteger/RealはDelphiでは互換性がありません。次の表は、BooleanとBytebool/WordBool/Longboolの類似点と相違点を比較しています。
ブール
false <true
ord(false)= 0
ord(true)= 1
cucc(false)= true
pred(true)= false
booltostr(true)= -1 //この関数は非常に異常です
booltostr(false)= 0
bytebool、wordbool、longbool
false <> true
ord(false)= 0
ord(true)<> 0
cucc(false)= true
pred(false)= true
booltoStr関数は、最も不可解なものです。関数のプロトタイプは次のとおりです。
関数booltostr(b:boolean; useboolstrs:boolean = false):string;
次の表は、関数の変換ルールです。
buseboolstrsvalue returned stringの値
TrueFalse'-1 '
true true trueboolstrsアレイの最初の値(デフォルト、 'true')
false false '0'
false true falseboolstrsアレイの最初の値(デフォルト、 'false')