Delphi中的布尔类型


本文整理自网络,侵删。

 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实现文件下载urldownloadtofile

Delphi 数组竟然可以这样定义

Delphi 代替pos的函数

Delphi 根据数据库结构生成treeview

Delphi 系统appdata local 路径

Delphi利用微软sapi实现语音控制(Delphi,tts,sr,灰色代码)_

Delphi 无法打不开读取文件名有逗号的文件

Delphi xe(indy10)tidbytes转ansistring的实现

Delphi goto语句用法

Delphi 内存修改的实现

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...