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 链接文件名合并

Delphi unigui unicheckbox勾选

Delphi drawing text 绘制文本

Delphi 计算程序运行时间

Delphi查找特定的exe是否在运行

Delphi-xe5-开发 android uri简介

Delphi 通过api强制tedit仅接受数字输入

Delphi 如何读取内存中的数据?

Delphi 10 seattle中使用本地通知,请使用tnotificationcenter组件

Delphi获取网卡mac地址的两种方法

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



打赏

取消

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

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

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

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

评论

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