delphi编程里的bool跟boolean类型有什么区别
2015-08-29 19:10
483 查看
bool是LongBool类型。
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')
参考:http://blog.csdn.net/sforiz/article/details/5618551
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')
参考:http://blog.csdn.net/sforiz/article/details/5618551
相关文章推荐
- * Delphi编程时候诡异地出现ORA-00937错误,记录解决它的思路和方法
- python4delphi import lxml pandas 出错的小结
- Delphi 和 DFM
- win8(x64)下,重新安装delphi 2007时出现“Invalid Serial Number”,如何解决?
- delphi中文件以及线程操作基础
- [备忘]Delphi 7 编译软件申请管理员权限
- Delphi 在多线程中会应用到的读写锁-“多读一写”同步器-TMultiReadExclusiveWriteSynchronizer
- (转载)Delphi TStringList的用法
- Delphi 连接SQLserver
- Delphi 7连接MySql 5.5.15
- python4delphi 设置syspath
- Delphi 指针大全
- Delphi 异常抛出与捕获
- Delphi 窗体程序接受命令行参数
- Delphi XE7中蓝牙 Bluetooth例子的使用
- 一句话改变TWinControl控件的left坐标的前世今生(入口函数是SetBounds,然后调用SetWindowPos起作用,并发消息更新Delphi的left属性值)
- Delphi控件的显示内容与显示边框是两回事
- python4delphi 安装
- 怎样在delphi中实现控件和窗体的拖拽
- Delphi日期时间 UNIX