第2章Delphi语法基础

  • 格式:pdf
  • 大小:401.57 KB
  • 文档页数:22

第2章Object Pascal语言基础Delphi的编程语言是Object Pascal,即面向对象的Pascal语言。

自Delphi7开始,Object Pascal语言改称为Delphi语言。

第1节保留字和标识符一、保留字保留字是由系统使用的具有特殊含义的单词(如And、If、For、Var等),详见教材16~17页表2.1。

二、指令符指令符也是由系统使用的具有特殊含义的单词(如Public、Private等),详见教材17页表2.2。

三、标识符标识符(Identifiers)用于表示常量、变量、域(字段)、类型、属性、过程、函数、程序、单元、库和包(packages)的名称。

Object Pascal标识符的声明和使用应遵循以下规定:∙长度任意,但仅前255个字符有效。

∙首字符必须是字母或下划线。

∙不能含有空格,中间的字符可以是字母、数字和下划线。

∙不能使用保留字(reserved words)作为标识符。

∙不区分大小写,例如sName与sname等价。

第2节注释三种注释形式:{注释内容}(*注释内容*)//注释内容注意:如果注释符{之后紧跟一个美元符号$(如{$R*.res}),表示该语句是一条编译指令,它与普通的注释不同,通常由Delphi自动生成,用于设置编译过程,不要修改或删除它。

第3节常量和变量一、常量1.普通常量如:123,-100,3.14,'abc',True等。

2.符号常量符号常量用保留字Const声明,格式如下:Const常量名=表达式;例如:ConstPI=3.1415926535897932385;College='山东教育学院';Numeric=['0'..'9'];//数字字符集合Alpha=['A'..'Z','a'..'z'];//英语字母集合AlphaNum=Alpha+Numeric;//集合的并2.变量变量声明的格式:var变量名表:类型;例如:varX,Y,Z:Double;I,J,K:Integer;S1,S2:String;Digit:0..9;//子界类型Flag:Boolean;单元级或全局变量可以在声明时初始化(每个声明语句仅限一个变量)。

例如:varx:Integer=0;S:string='abc';第4节数据类型概述1.数据类型分类Object Pascal的数据类型可分为以下几类:∙简单类型:包括有序类型(整型、字符型、布尔型、枚举型和子界型)和实数类型。

∙字符串类型∙结构类型:包括集合、数组、记录、文件、类、类引用和接口类型。

∙指针类型∙过程类型∙可变类型2.预定义类型与自定义类型有些数据类型是在Object Pascal中预先定义好的,编译器能够自动识别,无须编程者定义即可直接使用(如整型、实型、字符型、字符串型等)。

这些数据类型属于预定义类型(predefined types),或称内置类型(built-in types)。

另外一些数据类型在使用前必须由编程者定义(如枚举、子界、结构类型等),这些数据类型属于自定义类型(user-defined types)。

自定义类型需用type保留字声明:type自定义类型名称=类型;一、简单类型(Simple)包括有序类型和实数类型。

特点:一个简单类型的变量只存储单一值,它占用的内存大小相对固定。

1.有序类型有序类型(Ordinal types)包括整数、字符、布尔、枚举和子界类型。

有序类型定义一组有序的值,其中除第一个值以外均有一个惟一的前接值(predecessor),除最后一个值以外均有一个惟一的后继值(successor)。

每个值都有一个序号,在多数情况下,若某值的序号为n,则其前接值的序号为n-1,后继值的序号为n+1。

整数类型值的序号是其本身;子界类型保留其基类型的序号;其他类型中第一个值的默认序号为0,后续值序号依次加1。

枚举类型的声明可以覆盖默认值。

以下是操作有序类型的常用预定义函数:函数参数返回值Ord有序表达式表达式值的序号Pred有序表达式表达式值的前接值Succ有序表达式表达式值的后继值High有序类型标识符或变量类型中的最高值Low有序类型标识符或变量类型中的最低值High和Low亦可用于短缩字符串类型和数组。

例如:Byte类型的最高值为255,因此,High(Byte)返回255。

2的后继值是3,因此Succ(2)返回3。

标准过程Inc和Dec分别使有序变量的值加1和减1。

例如,Inc(I)与I:=Succ(I)等价;若I为整型变量,则Inc(I)相当于I:=I+1。

(1)整数类型∙通用整型:类型数值范围格式Integer-2147483648..2147483647有符号32-bitCardinal0..4294967295无符号32-bit∙基本整型:类型数值范围格式Shortint-128..127有符号8-bitSmallint-32768..32767有符号16-bitLongint-2147483648..2147483647有符号32-bitInt64-263..263-1有符号64-bitByte0..255无符号8-bitWord0..65535无符号16-bitLongword0..4294967295无符号32-bit(2)字符类型类型占用字节数存储内容Char1存储一个ANSI字符AnsiChar1存储一个ANSI字符WieChar2存储一个Unicode字符Char为通用类型。

常用函数:Chr函数:Chr(65)返回'A',与#65等价。

“#”常用于生成控制字符。

例如,下面的表达式表示在两个字符串之间插入回车换行符:'字符串1'#13#10'字符串2'(3)布尔类型类型占用字节数False序号True序号Boolean101ByteBool10非0WordBool20非0LongBool40非0 Boolean为首选类型。

注意:上表后两列中的0、1、非0只是序号,而不是布尔值本身。

在Object Pascal中,布尔表达式不能与整数或实数转换。

例如,若X是一个整型变量,则以下语句将产生编译错误:if X then...;可以用以下语句:if X<>0then...;(4)枚举类型(Enumerated types)枚举类型是一组有序的标识符。

枚举类型没有固定的范围,须由程序员定义。

这种需要编程者定义的数据类型称为“自定义类型”。

声明:type枚举类型名=(标识符列表);例如:typeTMyColor=(mcRed,mcGreen,mcBlue);Answer=(ansYes,ansNo);var Color1,Color2:TMyColor;Ans1:Answer;(标识符列表)本身起着类型名的作用,因此亦可直接声明变量:var Color1,Color2:(mcRed,mcGreen,mcBlue);(5)子界类型(Subrange types)子界类型是某一有序类型值的子集。

子界类型属于自定义类型。

基类型(base type):在子界、集合、数组、指针等自定义类型声明中引用的数据类型。

注意:区分基类型(base type)与基本类型(Fundamental type)。

声明:type子界类型名=下界..上界;例如:{声明一个枚举类型}type TColors=(Red,Blue,Green,Yellow,Orange,Purple,White,Black);{定义子界类型,它的“基类型”是上面声明的枚举类型TColors}type TMyColors=Green..White;又如:typeTGrade=0..100;//基类型是整数类型TLetter='A'..'Z';//基类型是字符类型var MyGrade:TGrade;MyLetter:TLetter;“下界..上界”本身起着类型名的作用,因此可直接声明变量:var x,y:1..200;注意:为子界类型的变量赋值时,不应超出其上下界。

2.实数类型类型数值范围有效位数字节通用Real 5.0×10-324~1.7×1030815~168基本Real48 2.9×10-39~1.7×103811~126 Single 1.5×10-45~3.4×10387~84 Double 5.0×10-324~1.7×1030815~168 Extended 3.6×10-4951~1.1×10493219~2010 Comp-263+1~263-119~208 Currency-922337203685477.5808~922337203685477.580719~2083.日期和时间在Delphi内部采用实数(Double)存取日期和时间信息。

为了便于使用,Delphi在系统单元(System.pas)中定义了TDateTime数据类型(映射为Double)。

该类型数据的整数部分代表日期(0=1899年12月30日),小数部分代表时间(时刻÷24),可以分别进行算术运算。

以下是系统定义的常用日期时间函数:●Date:返回当前系统日期●Time:返回当前系统时间●Now:返回当前系统日期和时间以下函数将日期时间型数据转换为字符串:function DateTimeToStr(DateTime:TDateTime):string;//日期和时间function DateToStr(Date:TDateTime):string;//日期function TimeToStr(Time:TDateTime):string;//时间以下函数将日期时间格式的字符串转换为日期时间型数据:function StrToDateTime(const S:string):TDateTime;function StrToDate(const S:string):TDateTime;function StrToTime(const S:string):TDateTime;二、字符串类型类型最大长度存储空间格式ShortString255字符2~256B ANSI字符AnsiString231字符4B~2GB ANSI字符WideString230字符4B~2GB Unicode字符保留字string默认为AnsiString类型。