Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的

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/zisongjia/article/details/72963204

时间: 2024-12-26 08:53:52

Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的的相关文章

使用javaScript在句子中找出最长的单词,并返回它的长度(三种方法)

1. 使用 sort排序方法(我能想起来的最笨的一种) function findLongestWord(str) { var strArr = str.split(" "); //将字符串长度,另存一个数组 var lenArr = strArr.map(function(item){ return item.length; }); var lastArr = lenArr.sort(function(a,b){ return b-a; }); var num = lastArr[0

CSS:3种基本的布局模型、层模型的三种形式

CSS包含3种基本的布局模型: 用英文概括为:Flow.Layer 和 Float.在网页中,元素有三种布局模型:1.流动模型(Flow)2.浮动模型 (Float)3.层模型(Layer) 流动布局模型具有2个比较典型的特征: 第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%.实际上,块状元素都会以行的形式占据位置.如右侧代码编辑器中三个块状元素标签(div,h1,p)宽度显示为100%. 第二点,在流动模型下,内联元素都会在所处的

在Delphi中静态调用DLL 引用外部Dll External Dll 导入Dll

  调用一个DLL比写一个DLL要容易一些.首先给大家介绍的是静态调用方法,稍后将介绍动态调用方法,并就两种方法做一个比较.同样的,我们先举一个静态调用的例子. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton;

ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

转自:http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送表单实现的.具体使用中,主要使用以下三种方法. 1.通过Request.Form读取表单数据        2.通过FormCollection读取表单数据        3.直接读取表单数据对象 下边是我学习这些东西时的一点总结 1.通过Request.Form读取表单数据      首先定

Oracle中定义package以及存储过程的使用

使用scott账户下的dept表: select * from dept order by deptno; 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 为了演示方便,插入一条数据: insert into dept(deptno, dname, loc) values(50,'SYSTEM', 'NEW YORK'); 新插入的记录为:50 SYSTEM NEW YORK 我们主要

三种存储类型比较-文件、块、对象存储

块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD. 首先,我们介绍这两种传统的存储类型.通常来讲,所有磁盘阵列都是基于Block块的模式,而所有的NAS产品都是文件级存储. 1.块存储 以下列出的两种存储方式都是块存储类型: 1) DAS(Direct Attach STorage):是直接连接于主机服务器的一

[转]Delphi 中动态链接库(dll)的建立和使用

动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源.由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK.ISAPI等.同时,DLL还为不同语言间代码共享提供了一条方便的途径.因而DLL在编程时应用较为广泛,本文将介绍如何在 Delphi 中建立和使用DLL. 一.DLL 库内存共享机制 从使用效果看,DLL和unit 很像,它们都可以

转-Web Service中三种发送接受协议SOA、http get、http post

原文链接:web服务中三种发送接受协议SOAP/HTTP GET/HTTP POST 一.web服务中三种发送接受协议SOAP/HTTP GET/HTTP POST 在web服务中,有三种可供选择的发送和接受信息的协议:SOAP,HTTP GET,HTTP POST,但是SOAP支持的数据类型更为广泛 SOAP=RPC+HTTP+XML SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议:RPC作为一致性的调用途径,XML作为数据传送的格式

[AngularJS面面观] 12. scope中的watch机制---第三种策略$watchCollection

如果你刚刚入门angular,你或许还在惊叹于angular的双向绑定是多么的方便,你也许在庆幸未来的前端代码中再也不会出现那么多繁琐的DOM操作了. 但是,一旦你的应用程序随着业务的复杂而复杂,你就会发现你手头的那些angular的知识似乎开始不够用了.为什么绑定的数据没有生效?为什么应用的速度越来越慢?为什么会出现莫名其妙的infinite digest异常?所以你开始尝试进阶,尝试弄清楚在数据绑定这个现象后面到底发生了什么. 相信能顺着前面数十篇文章看到这里的同学们,一定对angular是