delphi编程里的bool跟boolean类型有什么区别?
之前一直认为bool是win32里的布尔值,boolean是delphi里特有的布尔值(就是true或则false),今天碰到一个API函数,选取返回值时,这两个类型的返...
之前一直认为bool是win32里的布尔值,boolean是delphi里特有的布尔值(就是true或则false),今天碰到一个API函数,选取返回值时,这两个类型的返回值是不一样的,一个是true另一个是false,这两个有什么区别么?
展开
4个回答
2013-03-28
展开全部
bool是LongBool类型。 Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用Boolean类型。这四种类型的布尔值占用内存的数量如下:Boolean 1 ByteByteBool 1 ByteWordBool 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 < TrueOrd(False) = 0Ord(True) = 1Succ(False) = TruePred(True) = FalseBoolToStr(True) = -1 //这个函数很变态BoolToStr(False) = 0 ByteBool, WordBool, LongBoolFalse <> TrueOrd(False) = 0Ord(True) <> 0Succ(False) = TruePred(False) = True BoolToStr这个函数最莫名其妙了,明明说True的值是1,而它却告诉我们True是-1。函数的原形是:function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;下面这个表是函数的转换规则:B UseBoolStrs Value of returned stringTrue False '-1'True True TrueBoolStrs数组的第一个值(default, 'TRUE')False False '0'False True FalseBoolStrs数组的第一个值(default, 'FALSE')
展开全部
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。
这四种类型的布尔值占用内存的数量如下:
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 2007 里 BOOL = LongBool 4 Bytes
boolean 1Bytes ,大概就是这区别吧,boolean 是delphi原生的,BOOL是为了兼容其它语言的
boolean 1Bytes ,大概就是这区别吧,boolean 是delphi原生的,BOOL是为了兼容其它语言的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DELPHI里只有一个boolean类型,等同于BOOL,如果返回出现问题,应该是api函数的问题!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询