本文整理自网络,侵删。
delphi中定义了四种布尔类型:boolean,bytebool,wordbool和longbool。后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用boolean类型。
这四种类型的布尔值占用内存的数量如下:
boolean 1 byte
bytebool 1 byte
wordbool 2 bytes(1 word)
longbool 4 bytes(2 words)
对于bytebool,wordbool和longbool三种类型true常量的值为非零,false为零,可以用ord函数验证;
而对于boolean类型,true常量的值为1,false为零。在期望boolean值的上下文中,编译器会将bytebool,wordbool和longbool三种类型的非零值转换为true。
然而,在delphi中布尔表达式和integer/real是不兼容的。下面的表格对比了boolean与bytebool/wordbool/longbool在异同:
boolean
false < true
ord(false) = 0
ord(true) = 1
succ(false) = true
pred(true) = false
booltostr(true) = -1 //这个函数很变态
booltostr(false) = 0
bytebool, wordbool, longbool
false <> true
ord(false) = 0
ord(true) <> 0
succ(false) = true
pred(false) = true
booltostr这个函数最莫名其妙了,明明说true的值是1,而它却告诉我们true是-1。函数的原形是:
function booltostr(b: boolean; useboolstrs: boolean = false): string;
下面这个表是函数的转换规则:
b useboolstrs value of returned string
true false "-1"
true true trueboolstrs数组的第一个值(default, "true")
false false "0"
false true falseboolstrs数组的第一个值(default, "false")
相关阅读 >>
Delphi extractfileext() 获取文件后缀的函数
Delphi 用ini记录combobox的itemindex
Delphi getforegroundwindow 与 getactivewindow 的区别
Delphi中 tstringlist和thashedstringlist的性能对比
Delphi android 安卓系统 关闭打开(显示隐藏)输入法
更多相关阅读请进入《Delphi》频道 >>