Object pascal 语法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Delphi资料
项目 (2)
Delphi程序设计基本步骤 (4)
Object Pascal语言 (6)
Delphi对象与类类型 (29)
Delphi的程序单元 (44)
处理异常 (46)
包 (50)
项目
与项目有关的文件
Delphi项目包含窗体、单元、资源、选项等,所有这些信息都驻留在磁盘文件中。

在设计程序时,Delphi 创建这些文件的大部分,但有一些文件需要你借助其它工具来创建或其它途径获得,如资源文件、帮助文件等。

下面是设计程序时,Delphi自动创建的文件:
?项目文件(.Dpr):Delphi项目文件,用于保存窗体、单元等的信息,以及程序运行的初始化代码等,这种文件实际上包含了Pascal源代码。

?单元文件(.pas):Pascal文件,用于保存程序源代码,可以是与窗体有关的单元或是独立的单元。

?窗体文件(.Dfm):保存窗体或数据模块及其构件特性的二进制文件。

?选项文件(.Dof):含有当前项目选项设置的文本文件。

?Package源文件(.DPK):软件包的项目源代码文件,用于管理Packages信息。

?资源文件(.res):该二进制文件包含项目的图标,由Delphi不断更新和创建,用户一般不需要修改。

?备份文件(.-dp,.-df,-pa):分别对应项目、窗体、单元文件的备份文件。

?Desktop文件(.DSK):包含了与Delphi窗口的位置、在编辑器中打开的文件及其它桌面设置有关的信息。

?类型库(.TLB):一种自动建立或由类型库编辑器为OLE服务器端应用程序建立的。

?项目配置文件(.CFG):保存项目配置,文件名与项目名相同,但后缀为.CFG。

?Code Insight配置文件(.DCI):保存IDE中对Code Insight的修改信息。

?构件板配置文件(.DCT):保存IDE中对构件板的修改信息。

?菜单配置文件(. DMT):保存IDE中对Delphi菜单的修改信息。

?容器库修改文件(. DMT):保存程序对Delphi菜单容器库的修改信息。

?行为列表文件(.TODO):保存当前项目的行为列表。

文件名与项目名相同,但后缀为.TODO。

下面是程序编译后,Delphi自动创建的文件:
?执行文件(.exe):为程序编译后的Windows执行文件。

?单元对象文件(.dcu):是单元文件的编译版本,会连接到最终的执行文件中。

?动态连接库文件(.DLL):为设计动态连接库时创建的文件。

?ActiveX文件(.OCX):一种特殊的DLL,含有ActiveX构件或窗体。

指定项目的主窗体
所谓主窗体是指程序运行时用户看到的第一个窗体,每个应用程序必须且只能有一个主窗体。

主窗体的关闭意味着应用程序的终止。

Delphi能自动给每个加入到应用程序中的窗体一个包含序号的名字,其中主窗体就是项目文件.DPR中CreateForm语句列表的第一项,其它窗体如果存在的话将按照加入的顺序依此排列,这样你第一个生成的窗体总是应用程序的主窗体,不过你可以指定项目中任意一个窗体作为主窗体。

要改变应用程序的主窗体,可以在弹出菜单中选命令打开Project Options对话框,见图3.5。

在窗体页上的MainForm组合框内选择一个窗体,然后按下OK按钮。

请注意图3.5中的Auto-Create Forms列表框和 Available Forms列表框.
Auto-Create Forms列表框列出的窗体是程序运行时自动建立的窗体,在项目文件.DPR中必定有对应的CreateForm语句,而 Available Forms列表框列出的窗体只是程序可用的窗体,程序运行时并不建立,而
是由程序在运行时自己建立和释放,因此在项目文件中没有对应的CreateForm语句。

项目管理器
项目管理器显示一个项目中窗体、单元、资源、库和其它文件。

在项目管理器,可以进行诸如打开、增加、删除、编译项目等工作,也可以将一个项目增加到项目组或将从项目组中删除一个项目,或同时编译项目组中的所有项目。

选择View菜单中Project Manager命令,就可以打开项目管理器对话框。

从中你可以看到项目组中的所有项目及一个项目中的所有窗体文件、单元文件及其路径。

创建项目组
Delphi的IDE可以对多个项目进行管理。

通常把一些相关的项目放在一起形成项目组。

例如一个应用程序需要一个DLL,这时可以创建一个项目组,项目组包括两个项目,其中一个项目生成DLL,另一个项目生成EXE文件。

项目组中的项目及文件可以同时编译,而版本号却不会重复。

创建项目组的基本步骤如下:
(1)如果项目管理器没有打开,选择View|Project Manager命令打开项目管理器。

如果Delphi当前没有装入项目,项目管理器在项目列表框显示。

如果Delphi当前装入了项目,项目管理器在项目列表框显示。

(2)选择项目组,右击,从弹出菜单中选择Add New Project或Add ExistingProject命令。

Add New Project 将一个新项目加入到当前项目组,而Add ExistingProject将一个已有项目加入到当前项孔椤?br> (3)当项目组管理的项目多于一个时,可以在不同的项目之间拷贝、粘贴文件,也可以将Windows资源管理器检索到的文件拖到某个项目中。

(4)资源文件(.RC文件)也可以添加到项目中,并可在IDE中直接编译成.RES文件,而不需要像以前版本那样,退出IDE,调用其它的程序来编译。

(5)当需要的项目添加完后,可以对各个项目进行修改、编辑、编译等,最后右击,从弹出菜单中选择Save Project Group命令或Save Project Group As命令,为该项目组取一个有意义的名字并保存到硬盘上。

项目组的文件名后缀为.BPG。

项目管理器对话框
项目管理器对话框主要包括工具条、树形列表框、状态条等。

项目管理器主要区域是一棵列有项目或项目组中所有文件的树状视图。

树根是项目组名,树根的下层是项目名,项目名的下层是该项目下的所有文件。

在树状视图的右边是对应文件的路径全名。

当前活动的项目名用粗黑体显示,当加入一个窗体或数据模块时,它们只加入到当前活动项目中。

在树状视图的上方是工具条。

工具条上有三个按钮,分别与有关菜单命令对应,是管理项目的快捷方式。

其中:
?New:对应菜单中Add New Project命令,用于将一个新项目加入到当前项目组。

?Remove:将选择的项目从项目组中删除。

?Activate:激活选择的项目,使其成为项目组中的当前项目。

在弹出菜单中复位toolbar选项,可以取消工具条的显示。

如果要使一个项目在另一个项目后编译,选择要编译的项目,右击,从弹出的菜单中选择Build Sooner 命令,则该项目的编译次序提前一级。

如果要使一个项目在另一个项目前编译,选择要编译的项目,右击,从弹出的菜单中选择Build Later 命令,则该项目的编译次序降低一级。

项目浏览器
选择View菜单中Browser命令,就可以打开项目浏览器对话框。

Delphi程序设计基本步骤
设计窗体
以下分别介绍一些重要的窗体特性的设置:
(1)Action。

指定与菜单项相关的行为对象。

可以在设计阶段使用行为列表编辑器指定行为对象与菜单项的关系。

(2)ActiveControl。

ActiveControl是一个下拉框,该特性决定,当窗体被初次打开时,窗体中的哪个控制是焦点。

在一个应用程序中,在给定的时间只能有一个控制具有输入焦点。

例如,假设窗体上有两个按钮Button1,Button2,则下拉框有Button1,Button2两项,你可以选择Button1作为输入焦点,也可将Button2作为焦点。

(3)Anchors。

定义窗体与父窗体的位置关系。

当父窗体的位置发生改变时,窗体的位置也随之改变。

(4)AutoScroll。

这个特性用在可重新改变尺寸的窗口中。

当AutoScroll被设置为TRUE,并且用户重新改变窗体的尺寸而截去一个构件时,窗体自动显示滚动条。

在一个MDI应用程序中,用户把一个子窗口移出主窗口时,也会自动显示滚动条。

(5)Border Icons。

BorderIcons特性决定窗体运行时显示哪些图标,包括biSystemMenu(控制菜单)、biMinimize(极小化)、biMaximize(极大化)、biHelp(帮助)。

biHelp主要用于弹出窗口。

除biHelp外,对于普通窗体,所有这些图标都应保留。

只有在特殊情况下才应关掉控制菜单;没有时,用户会感到不习惯并希望它存在。

BorderIcons特性是一个嵌套特性,为了在这个特性内设置各个图标,可单击Object Inspector 中BorderIcons左边的+号。

+号变成-号,各个图标就会显示其特性。

(6)Border Styles。

该特性是一个下拉列表框,决定窗体的边框风格。

设计窗体时,一般选择一种边框风格,也可以在运行时设置BorderStyle特性。

(7)Caption。

该特性设置窗体的标题,其缺省是窗体的名称。

设计窗体时,你可以根据需要来设置。

(8)ClientHeight和ClientWidth。

这两个特性以像素为单位确定一个窗体的客户区域。

你可以根据需要设置窗体的实际屏幕尺寸长,以使窗体合理地显示屏幕上的信息。

(9)Color。

该特性设置窗体的背景颜色。

Object Inspector提供一个有许多预先定义颜色的下拉式列表,你可以根据需要设置。

(10)Cursor。

该特性选择出现程序运行时光标经过窗体时光标的形状。

一般将这个特性设置为crDefault,在运行时改变为其它形状。

例如,开始一项需要用户等待的操作时,可将光标变成一个计时沙漏。

(11)DefaultMonitor。

指定窗体的监视器。

用于使用多监视器的程序。

(12)DockSite。

决定窗体是否作为拖放操作的目标。

(13)Enabled。

该特性使用户可以使窗体有效或无效。

一个无效的窗体不响应诸如鼠标器按钮、计时器事件,或击键等事件。

当希望用户不影响一个选定窗口时,运行期间可使用这个特性。

(14)Font。

该特性设置窗体的字体。

由于窗体内没有文本(标题条不受Font特性的影响),所以该特性几乎不影响窗体本身,但是,由于许多构件都有ParentFont特性,当ParentFont特性设置为真时,一个构件的字体使用父窗口字体的特性。

将窗体所有构件的ParentFont特性设置为真,这样改变窗体的Font特性,就可以有效地改变所有构件的字体特性。

(15)FormStyle。

该特性设置窗体的风格。

窗体可能的风格为fsNormal,fsMDIChild,fsMDIForm,fsStayOnTop。

缺省值为fsNormal。

fsNorma设置窗体风格既不是MDI父窗口,也不是MDI子窗口;fsMDIChild 设置窗口为MDI子窗口;fsMDIForm设置窗体为MDI父窗口;fsStayOnTop设置窗体为窗口运行时始终在其它窗口的上面,除非还有其它窗口设置为fsStayOnTop。

注意,窗体风格最好在窗体设计阶段就设置好。

(16)HelpContext。

该特性设置窗体帮助上下文。

大多数Windows 程序都包含上下文相关帮助。

用户的应用程序中也应包含上下文相关帮助。

当创建一个帮助系统时应用程序的每个窗体在帮助系统中应是不同标题。

把一个给定窗体的标题号放在窗体的HelpContext特性中,当窗体收到一个帮助事件时,就启动帮助系统,并显示该特定标题。

如果应用程序不提供帮助,可设置HelpContext特性为0。

(17)HorzScrollBar和VerScrollBar。

这两个特性使用户手动控制窗体的滚动条。

通常应该把AutoScroll 特性设置为真,滚动条被自动地处理。

要先手动显示滚动条时必须设置滚动条的嵌套Visible特性为真,并把嵌套Range特性设置成一个比ClientHeight或ClientWidth大的数。

(18)Icon。

该特性指定应用程序极小化时显示的图标。

(19)KeyPreview。

当KeyPreview特性设置为真时,某些键盘事件(OnKeyDown,OnKeyUp,及OnKeyPress 等)首先被送至窗体,然后发送至具有焦点的构件。

当KeyPreview设置为假时,键盘事件只传送给具有焦点的构件。

该特性省去了许多处理某些击键事件的冗余代码。

例如,当用户只想为窗体提供帮助,而不想为窗体中的每个构件都提供帮助时,设置KeyPreview特性为真。

当用户按F1时,而启动窗体的帮助系统。

(20)Left和Top。

窗体的Left和Top特性决定窗体打开时的位置。

Left和Top特性的单位是像素。

可以在Object Inspector中直接输入这些特性,也可以用鼠标移动窗体定位。

在设计移动窗体时,Delphi自动更新Left和Top特性。

(21)Menu。

当设置一个简单的应用程序时,窗体可能只包括一个MainMenu构件。

对于较复杂的应用程序,窗体可能会有不止一个菜单。

使用窗体的Menu特性指定显示哪一个MainMenu构件。

Delphi自动把窗体的Menu特性设置为第一个放在窗体的MainMenu构件。

当出现多个菜单时,可使用Menu特性的下拉式列表选择适当的构件。

(22)Name。

与所有的Delphi构件一样,Form构件有一个Name特性。

当第一次创建窗体时,Name 特性设置成Form1。

鉴于在代码中经常使用这个名字,最好在编写代码之前,将名字改为与所描述的窗体更贴切的名字。

(23)OldCreateOrder。

指定OnCreate和OnDestroy事件发生的时间。

当OldCreateOrder值为False(缺省)时,OnCreate事件发生在窗体上所有构件的构造函数完成之后,OnDestroy事件发生在任何析构函数调用之前。

(24)PixelsPerInch和Scaled。

通过设置窗体的PiwelsPerInch特性为一个不是缺省值的值,并将Scaled 特性设置为真时,可以有效地扩大或缩小窗体的尺寸。

这在以一种屏幕分辨率进行设计而在另一种屏幕分辨率中使用的应用程序是有用的。

增大PixelsPerInch特性,窗体减小;减少PixelsPerInch特性,窗体增大。

如果窗体中有Tlmage构件,应把这种构件的Stretch特性设置为真,这样构件就会随窗体的改变而变化。

为了在运行时改变窗体的放大率,可使用ScaleBy的过程。

(25)PopUpMenu。

为创建窗体的加速菜单,在窗体中放入一个TPopUpMenu构件。

将窗体的PopUpMenu 特性设置为TPopUpMenu构件的名称。

当用户右击窗体时,便显示该弹出式菜单。

使用弹出式菜单使程序具有与用户更友好的界面。

(26)Position。

在设计期间用户可以指定窗体的准确位置和尺寸,同时Delphi提供的Position特性自动地在运行时放好窗体。

(27)UseDockManager。

决定停泊管理器(dock manager)是否用于拖放操作中。

(28)Visible。

确定一个窗体是否可见。

当创建一个多窗体应用程序时,有时出现一些窗体,该窗体是不想看到的,一直到某个行为发生为止,例如,如果程序中有一个About框,直到用户打开帮助菜单并选择About项时,不会向用户显示about框。

为了在运行时控制一个窗体是否可见,可设置其Visible特性。

缺省时,所有窗体的Visible特性设置为假。

注意,Visible特性不影响程序的主窗体,它的可见性与Visible 设置无关。

(29)WindowMenu。

大多数MDI应用有一个叫做Window的菜单。

此菜单是诸如Arrange All和Cascade 等选项,加上一个所有子窗口的目录。

当用户从菜单中选择一个子窗口时该窗口获得输入焦点。

Delphi中WindowMenu特性自动生成子窗口目录。

简单地把窗体WindowMenu特性设置为菜单中已经存在的TMenuItem构件,子窗口目录就被加入到这个TMenuItem构件中。

(30)WindowState。

该特性控制窗口运行时是极小化,极大化,还是正常状态。

在本例中,我们仅需要修改Name特性和Position特性。

将Name设置为Example,Position设置为poScreenCenter。

另外调整窗体大小,使其符合要求。

这样,窗体名该为Example,使程序运行时显示在屏幕中央。

在File菜单中选择Save Project As命令,Delphi将要求用户输入与窗体有关的单元文件名及项目文件名。

这里我们输入单元文件名为ExpUnit.PAs及项目文件名ExpPro.DPR。

注意,在输入文件名时,单元文件名、项目文件名及窗体名不能相同。

Delphi提供了对齐对话框,使用对齐对话框有时更为方便。

其操作步骤是:
(1)选择构件。

如果选择一个构件,单击该构件即可;如果选择多个构件,请先选择一个构件,然后按住Shift键,继续选择其它构件,直到多个构件都选择完毕,才放开Shift键。

(2)选择Edit菜单中Align命令,或右击鼠标,选择弹出式菜单中的Align命令。

对齐对话框显示如图4.5所示。

(3)根据需要在对话框中选择对齐选项。

(4)选择OK按钮,执行对齐操作,同时退出对话框。

要锁定构件位置,只要选择Edit菜单的Lock Control命令。

为了快速定位特性字段,可以使用TAB键加特性字段的首字母。

如在修改Button1构件的特性时,要定位到Width特性字段,可以按TAB+W直接定位到Width字段,然后再按TAB将光标移到Value列。

如果只按TAB键,则光标在特性名与特性值列之间移动。

为了显示编译进度和结果,可以选择Tools菜单中Environment Options命令,在对话框中选择Preferences 页,从中选择Show Compile Progress(显示编译进度)选项
单元结构
下面对本单元的主要部分进行简单的介绍:
(1)unit:unit头部分标志下面的代码是一个单元,后面紧跟的是单元的文件,其扩展名是.Pas。

(2)interface:interface标志单元接口部分的开始,单元接口部分定义变量、类型、过程等,是其它单元或程序其它部分可以访问的部分。

单元接口部分结束于Implement部分的开始。

(3)uses:uses语句告诉程序最终的执行代码中需要哪个函数和过程。

Delphi会自动把一些必须的单元包括进来,例如本程序的Windows, Messages, SysUtils等。

对于你自己书写的单元,如果程序中使用了该单元的函数或代码,也需要包括在uses部分中。

(4)type:这部分用来定义用户定义的类型,然后就可以定义使用该类型的变量。

(5)var:这部分用来定义变量和对象变量。

在本窗体单元中,Interface部分使用var把窗体Example 定义为一个TExample对象的实例。

var也用来定义其它Implement部分的变量、过程、函数等。

(6)Implement:这部分定义所有在interface部分说明过的函数、过程。

实际上,Implement部分也可以定义变量、过程、函数等,但只能被本单元局部访问;也可以在这部分增加一个uses语句,来访问其它单元。

(7){$R *.DFM}:该语句把单元连接到窗体的.dfm文件。

不要删除这条语句,否则会发生编译错误。

接下来的是两个过程语句,我们知道,SetButtonClick为单击SetButton按钮时的处理过程,FontButtonClick为单击FontButton按钮时的处理过程。

最后,用一个end加一个英文句号(.)来标志程序的结束。

在本单元中,省略了单元的initialization部分和finalization部分,它们是:
initialization:这部分在单元运行前执行,用于单元代码的初始化、分配空间等。

finalization:这部分在单元退出运行前执行,用于释放单元占用的空间、变量等。

实际上,在一个完整的单元文件里,可以用这两部分来完成单元的初始化及空间变量的释放等工作。

Object Pascal语言
控制串由一个或多个控制字符组成,由“#”开头,后面紧跟一个范围在0~255的无符号的整数,用于代表相应的ASCII字符。

下面再列出一些变量声明的例子:
var X, Y, Z: Double;
I, J, K: Integer;
Digit: 0..9
C: Color;
Done, Error: Boolean;
Operator: (Plus, Minus, Times);
Hue1, Hue2: set of Color;
Today: Date;
Results: MeasureList;
P1, P2: Person;
Matrix: array[1..10, 1..10] of Double;
在声明变量时,还可以带一个可选的Absolute子句,用于指定变量的值在内存中存储的绝对位置,
例如:
var CrtMode:Byte Absolute $0040:$0049
上例中,声明了一个Byte类型的变量CrtMode,Absolute指示字后第一常量是段的值,第二个常量是偏移量。

变量可以在定义时就指定一个初值。

例如:
var I: Integer = 7;
等价于:
var I: Integer; ...I := 7;
指定的初值可以是任何变量类型的常数表达式。

1.纯常量
纯常量是一种预先定义的标识符,其值在定义后永远不会改变。

例如:const MaxValue = 237;
2.类型常量
与纯常量不同,类型常量用于保存数组、记录、过程以及指针等类型的值。

类型常量不能出现在常量表达式中。

在缺省的编译器状态(即{$J+})下,类型常量的值可以改变,这时类型常量更像初始化过的变量。

但当编译器状态改为{$J-}时,则类型常量的值在运行期就无法改变,此时,类型常量实际上变成了只读变量。

声明类型常量的语法规则为:
const identifier: type = value
这里,常量名要符合Pascal语言关于标识符的规则。

type是除了文件型和可变型之外的所有类型。

Value 是一个类型为type的表达式。

例如:
const Max: Integer = 100;
一般来说,Value为一个常量表达式,但当type是数组、记录、过程和指针时,必须执行特殊的规则。

6.3 数据类型
类型是某类数据的名称,用于确定能存储信息,及能存储多少信息等。

ObjectPascal是一种强类型的语言,其数据类型的定义、声明以及数据的赋值和传递都必须遵循严格的语法规则。

因此,学习和掌握数据类型是设计好程序的关键。

Pascal支持丰富的数据类型,本书将其分为6大类:
?简单类型,包括有序类型和实数型。

其中有序类型是指整数类型、字符类型、布尔类型、枚举类型以及子界类型。

?字符串类型。

?结构类型,包括集合类型、数组类型、记录类型、文件类型、类类型、类引用类型、接口
类型等。

?指针类型。

?过程类型。

?变体类型。

6.3.1 简单类型
Object Pascal的简单类型包括有序类型和实数型。

其中有序类型是指整数类型、字符类型、布尔类型、枚举类型以及子界类型。

下面分别进行讨论。

1.有序类型
有序类型是指整数类型、字符类型、布尔类型、枚举类型以及子界类型。

有序类型是一个有序数的集合。

在每一种有序类型中,任何一个该类型的元素都有一个唯一的先行数(第一个除外)和唯一的后继数(最后一个除外)。

而且。

每个值均有一个确定的序号。

对整型数而言,该序号就是该整数的本身。

而其它的有序类型(子界类型除外),第一个值的序号是0,第二个是1,依此类推。

如果某个有序类型的值为N,则其先行数为N-1,后继数为N+1。

Object Pascal预先定义了一些函数,专门用于处理有序类型的表达式和变量,表6-1列出了最常用的几个。

表6-1 常用函数
函数参数返回值备注
Ord 有序类型表达式有序类型表达式值的序号不能带Int64参数
Pred有序类型表达式有序类型表达式值的先行数不能在拥有Write过程的
特性上使用
Succ有序类型表达式有序类型表达式值的后继数不能在拥有Write过程的特性上使用
High有序类型标识符或变量该类型中序号最大的值也可在short-string类型或数组
Low有序类型标识符或变量该类型中序号最小的值也可在short-string类型或数组例如,表达式High(Byte)将返回255,这是因为Byte类型的序数最大为255。

表达式Succ(2) 将返回3,这是因为3紧跟在2的后面。

标准过程Inc和Dec用于增加或减少一个有序类型变量的值,例如:Inc(I)等价于执行I := Succ(I)如果I是一个整数类型,还等价于执行:I := I + 1
下面分别对整数类型、字符类型、布尔类型、枚举类型以及子界类型进行介绍:(1)整数类型(Integer)在Object Pascal中,Integer类型是所有有符号整数的统称。

实际上,整数类型可以分为基本整数类型(Fundamental type)和一般整数类型(generic type)。

一般整数类型(generic type)包括Integer和Cardinal两种。

在实际编程时,请尽量区分这两种,因为底层CPU和操作系统对结果进行了优化。

表6-2列出了Integer和Cardinal的取值范围及存储格式。

表6-2 一般整数类型的取值范围及存储格式
数据类型取值范围存储格式
Integer?147483648..214748364732位有符号
Cardina l0..429496729532位无符号
基本整数类型包括Shortint、Smallint、Longint、Int64、Byte、Word和Longword。

表6-3列出了它们的取值范围及存储格式。

表6-3 基本整数类型的取值范围及存储格式
数据类型取值范围存储格式
Shortint-128..127signed 8-bit
Smallint-12768..32767signed 16-bit
Longint -2147483648..2147483647 signed 32-bit
Int64-2^63..2^63?signed 64-bit
Byte0..255unsigned 8-bit
Word0..65535unsigned 16-bit
Longword0..4294967295unsigned 32-bit
一般整数类型的实际范围和存储格式随着Object Pascal的不同实现而不同,但通常根据当前CPU和操作系统来采取最佳的操作方式。

一般整数类型是最常用的整数类型,可以充分利用CPU和操作系统的特性,因此程序中应当尽量使用一般整数类型。

基本整数类型独立于操作系统和CPU,只有当应用程序的数据范围或存储格式特别需要时,才使用基本整数类型。

通常情况下,整数的算术运算结果为Integer类型,等价于32位的Longint类型。

只有当操作数存在Int64类型时,才返回Int64类型的值。

因此,下面的代码将产生错误的结果:
var I: Integer; J: Int64;
...
I := High(Integer);
J := I + 1;
在这种情况下,要取得一个Int64的值,必须进行类型转换:
J := Int64(I) + 1;
注意:绝大多数例程在遇到Int64时都把它转换为32位。

但例程High,Low,Succ,Pred,Inc,Dec,IntToStr和IntToHex则完全支持Int64参数。

Round,Trunc,StrToInt64,和StrToInt64Def函数可以返回Int64类型的结果。

(2)字符类型(Char)
字符类型中Char类型设计来只存储一个字符。

一个字符占一个字节,因此Char数据类型可以存储256个不同的字符,其对应的整数为0到255。

除了Char数据类型外,Delphi还提供了Char类型的扩展,即AnsiChar和WideChar型。

表6-4是字符数据类型的列表。

表6-4 字符整数类型
字符类型占用字节数存储内容
AnsiChar1存储一个Ansi字符。

WideChar2存储一个UniCode字符。

Char1目前,对应AnsiChar。

但Delphi将来的版本可能对应于WideChar。

Ansi字符集是扩展的ASCII字符集,仍然占一个字节。

目前,Char对应AnsiChar,但Borland公司在将来的Delphi版本中可能使Char对应WideChar。

WideChar用来支持泛字符集(Unicode)。

Unicode字符占用两个字节,可以有65536种不同的取值,可以表达现代计算机中使用的世界上所有的字符,包括图形符号和用于出版业的特殊符号等。

UniCode字符集的前256个字符对应着ANSI字符。

如果你把一个AnsiChar字符放到WideChar字符类型的变量中,WideChar字符类型变量的高字节将全部置为0,AnsiChar字符存放到WideChar字符类型的变量的低字节中。

注意:Windows NT全面支持Unicode字符号集,但Windows 95却不同。

如果你希望书写的程序同时能在两种系统上运行,必须使用SizeOf()函数,以确定字符占多少字节。

(3)布尔类型(Boolean)
Boolean数据类型的变量只存储一个逻辑值,例如True或False。

共有4种Boolean数据类型,见表6-5。

表6-5 布尔类型
类型说明
Boolean占1个字节。

相关文档
最新文档