Delphi7程序设计教程_第1页
Delphi7程序设计教程_第2页
Delphi7程序设计教程_第3页
Delphi7程序设计教程_第4页
Delphi7程序设计教程_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Delphi 7 很经典的一个版本,值得收藏,更为高手爱好!Delphi是一个类似微软公司开发的VB的一个Windows应用程序开发环境,它强大的数据库开发功能、简单的窗口界面设计一直得到程序员的青睐。汉化方法:汉化时先安装原版英文软件,安装完成后,把 Bin 目录下的所有文件复制至安装目录的 Bin 文件夹中,把 System32 目录下的所有文件复制至 Windows 安装目录下的系统目录中(Windows 9X 为 System,Windows2000,WindowsXP Windows2003 为 System32)。第1章 Delphi 基础知识1.1 为什么选择DelphiDelp

2、hi是美国Borland公司推出的一种基于客户/服务器体系的Windows快速应用开发工具(RAD Rapid Application Development),是一种面向对象的可视化编程工具,即根据Delphi的可视性,又结合Object Pascal 语言的编程技巧,可以开发出功能强大的Windows应用程序和数据库应用程序。 Delphi是第一个集可视化开发环境、优化的源代码编译器和可扩展的数据库访问引擎于一身的Windows开发工具。它具有以下优点:1. 优秀的可视化开发环境2. 高效率的编译器3. 结构良好的编程语言4. 对数据库和网络编程的灵活支持5. 层次清晰和可扩展的框架1.2

3、 Delphi 发展史Delphi发展至今,从Delphi1、Delphi2到现在的Delphi xe,不断添加和改进各种特性,功能越来越强大。Delphi 1.01995年一个开发工具中的超级明星在Borland诞生了,这就是 Delphi 1.0。在Delphi1.0中Borland放弃了OWL(Object Window Library),取而带之的是全新的Visual Component Library,从此开始了组件(Component)技术的时代,其意义深远;Delphi1.0是完全面向对象的。它是Delphi的最早版本。Delphi 2.01996年Delphi2.0完成了16位

4、到32位的跨越,提供了32位操作系统的完整支持,只能在Windows 95以上的操作系统中使用,它如同Delphi1.0一样大获成功。在Delphi2.0中Borland为它增加了可视的Form的继承,并且面向对象更彻底。由于所有函数支持虚函数特性,对程序编写和维护非常方便,大量类似的报表也采用了此技术。Delphi 2.0中,增加了Data Modules的概念,可以将数据包装在一个模块中,在系统启动时或空闲时 将它打开,这样,所有使用这些Table的模块都可以公用它,避免重复打开和关闭。并且,由于所有数据Table位于一个模块中,非常便于管理维护和迁移升级。Delphi 3.01997年:

5、在微软COM/DCOM技术日益成熟的情况和企业对分布式应用程序开发工具的需求下,Borland的开发人员巧妙的平衡了二者的关系,使Delphi3.0成为Windows平台的第一款提供分布式开发的开发工具。Delphi 4.01998年:由于决策的错误,Delphi 4.0是一个不成熟的产品,其中有大量的bug,尽管Borland也不停的发补丁,但不稳定的恶名很快在delphi用户传开, delphi4.0给delphi蒙上了阴影,也使Visual Basic有了喘息之机。Delphi 5.01999年:在失败的Delphi4以后,Borland小心的推出了Delphi5.0,重新建立delph

6、i的声望,delphi受到delphi开发人员一致推崇。在这个版本中Delphi对IDE(集成开发环境)进行了很多改进,扩展了对数据库的支持(ADO和InterBase数据库),转换功能,框架概念以及很多的新组件与新特性。 Delphi 6.02001年:Delphi 6添加了对如下特性的支持:对CLX(Component Library for Cross-Platform CLX)跨平台开发的支持,扩展的运行库(run-time library),dbExpress数据库引擎,Web 服务和杰出的XML支持,一个强大的Web开发框架,IDE的更多增强,大量的组件和类,delphi开始为向.

7、net过渡做准备。 Delphi 7.02002年:Delphi 7是Delphi向.net过渡的产品,在照顾老的使用者的同时,Borland在其中加入了对.net 的支持,所以Delphi7可以同时编写原windows下和.net下的应用程序。2002年11月,borland为delphi7提供了修改后的,使vcl组件可以在.net环境下使用。 Delphi 8.02003年:Delphi 8 for .NET集成开发环境提供了许多工具和特性以帮助你快速创建强大的.NET应用程序。它是为了与微软的visual studio. Net竟争而设计的。Delphi 8 for .NE

8、T已经拥有C#的能力,同时仍然保留Delphi的易用性可以,但它只是一个测试版,一个过渡版。还不太完善。Delphi 9.0(2005)2004年:Delphi9集成了starteam,caliberrm,Unit testing及Together部份的功能. 加入了inline及for in loop等功能。 它把Win32的开发工具全部整合到Delphi9中。Delphi9把Borland Delphi .Net、Borland Delphi Win32、Borland C#等环境和功能集成成一个开发工具,因此可以在Win32和.NET开发环境中切换或同时进行。2005 10.0 发布名称

9、:Borland Developer Studio(BDS) 2006。集成C+ Builder; ECO(Enterprise Core Objects)升级到ECO III; 集成Together for Delphi,可以在同一个IDE中进行UML开发;QA Audits和QA Metrics可以快速的把握专案的设计和代码的质量。 2006 Turbo Borland将BDS 2006拆分成几个独立的版本(Delphi for win32、Delphi for .net、C#、C+ Builder),而且不能同时安装两个不同的版本。由于Borland的IDE生产部份独立成为一家名为cod

10、egear的公司,所以这个版本是以Borland名义推出的最后一个版本。 2007 11.0 正式名称:CodeGear RAD Studio - Delphi 2007。2008 5.7 Borland正式宣布将CodeGear子公司出售给Embarcadero(易博龙)技术公司。2008 8.25 Embarcadero发布CodeGear Delphi 2009 Pre-release版。2009 8.25 Embarcadero发布CodeGear.RAD.Studio.2010版2010 年:发布Embarcadero RAD Studio 2011版,官方名称为RAD Studio

11、 XE1.3 第一个程序开发一个应用程序一般要经过以下几个阶段: 需求分析与总体设计。此阶段的任务是让程序开发人员充分理解系统的需求和任务,给出实现这些需求与任务的总体方案。 代码开发与程序调试。此阶段按照设计方案使用编程语言开发出应用程序。在开发的过程中反复调试以修改语法错误和逻辑错误,最终生成符合要求的可执行文件。 投入运行与程序维护。经测试无误的应用程序就可以投入运行了。程序的维护是为了保证程序能正确地运行。在代码开发与程序调试阶段,使用Delphi时一般包括3个步骤: 程序窗体设计: 包括对窗体中组件的设计。 程序代码设计: 设计窗体和窗体中组件的各种操作和响应事件的处理代码。 编译和

12、调试程序:对程序代码进行编译,修改各种语法错误和逻辑错误,生成正确的可执行代码。第2章 Delphi语言基础2.1 编程风格2.1.1 注释块注释:通常被用在版权注释中,也被用来注释掉一些代码行。 注释 (* 注释 *) 单行注释:作用域只是它所在的一行,使用方便。/2.1.2 命名命名对象可以是常量、变量、函数、过程等用户自已书写的定义的标识。在Object Pascalj里不分大小写。命名原则:用意思明确的英文单词或者词组命名,且首个字母大写,若是多个单词(不能在单词间插入空格),采用驼峰格式。例: jklasdf /没有意义 Mylongidentifier /可读性差 Thisismu

13、chmorereadableroutinename /可读性差 MyLongIdentifier ThisIsMuchMoreReadableRoutineName注意:命名的第一个字母尽量不要用T,F,I这三个字母。2.1.3 空白源代码中的空格、空行及制表符等称为空白区。使用空白可提高程序的可读性,又不影响编译。2.1.4 缩进 使程序便于阅读理解。不要在源代码中保留Tab字符。2.2 基本概念2.2.1 进制 二进制,十进制,十六进制(加$符号)2.2.2 保留字程序如同一篇文章,由字符组成单词,再由单词和符号构成句子语句。其中有一类单词,它们具有特定的语法含义,称为保留字(reserv

14、ed words)。程序员不得重新定义保留字的语义。常用的保留字如:begin、end、if、then、for、do等。教材第24页表2-1。2.2.3 标识符标识符用作常量、变量、数据类型、属性、过程、函数、单元及程序等的名称。由一个或多个字符序列组成,其构词规则如下:(1)标识符由字母、数字或下划线组成;(2)标识符的第一个字符必须是字母或下划线;(3)标识符的长度不应超过255个字符,否则只有前255个字符有效;(4)不能将保留字用作标识符;(5)标识符不区分大、小写。例如:x、x1、max、a15、Button_OK都是合法的标识符,而5x、x-y、ax10.5等都是非法的标识符。 标

15、准标识符:在Object Pascal语言中,有一类标识符是系统预先定义的,它们用于标识系统预先定义的标准函数、标准过程、标准类型、标准常量及标准文件等。标准常量,如False、True等。标准类型,如Boolean、Char、String、TDateTime等。标准函数,如Abs、Eof、ShowMessage、Sqrt等。标准过程,如Dispose、New、Read、Readln、Reset等。标准文件,如Input、Output等。注意:当程序中自定义的标识符与其引用的单元中所定义的重名时,如果要访问被引用单元的标识符,则必须指示为外部单元的标识符,不然访问的是本程序定义的标识符。2.3

16、 常量与变量二者都是存储数据的载体,不同的是常量中的值不能改变,变量中的值则随着程序的运行而改变。一般位于函数或者过程的起始位置定义。2.3.1 变量变量是程序设计最基本的要素,是实现人与计算机交流的最基本的媒介,变量中可以存放字符、数值、日期或对象等。1. 变量的声明变量说明的一般形式为: var : ;其中,变量标识符列表中可以包含一个或多个变量标识符,若有多个变量标识符时,相邻的两个变量标识符之间应使用逗号“,”隔开;类型标识符用以指定这些变量的数据类型。变量说明以保留字var开头。一个变量说明部分可包含多个变量的说明,每个变量说明末尾均有分号。一个变量在某一个时刻有且仅有一个值。2.

17、变量的命名和格式 与标识符类似3. 局部变量和全局变量从作用范围来划分:局部变量和全局变量,在过程或函数内部声明的变量称为局部变量,否则称之为全局变量。局部变量在它所在的过程或函数执行完后由系统自动释放,全局变量在程序被关闭时释放。在声明变量时,局部变量不能初始化,全局变量可以初始化,但在声明多个同类型变量时不能初始化。2.3.2 常量1. 字面常量(1)整型常量 即整数,如3、10000、-90。在Object Pascal中十六进制形式表示整型常量以字符$开头,如$20相当于十进制的32。(2)实型常量即实数,例如,6.6、0.77e+4。后者的表示方法称为指数记数法或科学记数法,0.77

18、e+4表示0.77104。 Pascal语言中的实数表示和日常书写的形式基本相似,但要注意以下几点:小数点前后一定要有数字。数中不允许包含空格字符与逗号。例如1,000,000是不合语法的。没有分式表示。使用指数记数法时,e前面应有整数或实数,e后面必须是整数。例如:88.0、-0.8、1e+23、-3.45e-6都是正确的实数表示法,而88.、.66、4.4e5.5、e6则是不正确的。(3)布尔常量它是指False和True这两个值,False表示逻辑值“假”,True表示逻辑值“真”。(4)字符常量字符常量有两种表示方式:用单引号对括起来的单个字符,如a、*、2等。用#引导一个整数,整数表

19、示该字符的ASCII码。例如,#13、#$20、#$30、#65分别表示回车符、空格符、数字符号0、字母A。(5)字符串常量字符串常量是用单引号对括起来的一串字符,例如,Good idea、96.5、#=。当字符串内有单引号时,要用两个连续单引号表示,例如,Most childrens English Course。书写字符串需要注意以下几点:空格字符可以是字符串的组成部分。所以在字符串中的任何空格字符都是其值的一部分;字符串中的字母有大小写区分,即A1不等于a1。2. 符号常量字面常量可以在程序中直接使用,而由标识符表示的符号常量需预先定义。常量定义的一般形式为:const =表达式;或 :

20、=表达式;在Pascal程序的声明部分,以保留字const后开始常量声明;“=”号左边为常量标识符;“=”号右边的表达式可以由常量、部分在程序编译时可计算的函数,及先定义的常量标识符等构成,表示符号常量的值。一个类型常量定义部分可包含多个类型常量定义,每个类型常量定义末尾均有分号。 例:const Pi: Double=3.; Max=100;Object Pascal对常量定义有如下要求:必须遵循先定义后使用的原则,即只有已定义的常量标识符才能在程序中使用。不能改变符号常量的值。可用于常量定义的函数,即在程序编译时可计算的函数,有Abs、Chr、Length、Odd、Ord、Pred、Rou

21、nd、SizeOf、Succ、Swap、Trunc等(见下表2-2)。使用常量定义的意义在于减少常量值差错机会与修改程序的工作量,并提高程序的可读性。表2-2 可以在常量表达式中引用的标准函数函数说明Abs(X)求X的绝对值Addr(X)返回X的地址Chr(X)返回值为X的字符Length(X)求字符串X的长度Odd(X)判断X是否为奇数Ord(X)返回序数类型变量X的序数值Pred(X)返回序数类型变量X的前一个值Succ(X)返回序数类型变量X的后续值SizeOf(X)返回X在内存中占用的字节数Round(X)把X四舍五入取整Swap(X)交换16位整数的高位和低位Trunc(X)把实数X

22、截断为整数2.4 运算符Object Pascal所支持的运算符主要有算术运算符、逻辑运算符、关系运算符3大类。2.4.1 赋值运算符 赋值运算符“:=”是先计算赋值运算符右边表达式的值,再将结果赋给左边的变量。2.4.2 算术运算符用于完成算术运算。对于、-、*,若参加算术运算的两个数都是整型数据,则运算结果也是整型。运算符作用操作数类型结果类型+表示正值Integer或RealInteger或Real算术加Integer或RealInteger或Real表示负值Integer或RealInteger或Real算术减Integer或RealInteger或Real*算术的乘运算Integer

23、或RealInteger或Real/浮点数的除运算Integer或RealRealDiv整型数的除运算IntegerIntegerMod模运算IntegerInteger2.4.3 逻辑运算符操作数及结果都是布尔值。运算符作用操作数类型结果类型not逻辑非BooleanBooleanand逻辑与BooleanBooleanor逻辑或BooleanBooleanxor逻辑异或BooleanBoolean2.4.4 位运算符对操作数进行位级操作。部分位运算符与逻辑运算符在形式上是一样的,区别是其操作数及返回结果。运算符作用操作数类型结果类型Not按位非IntegerIntegerAnd按位与Int

24、egerIntegerOr按位或IntegerIntegerXor按位异或IntegerIntegerShl按位左移IntegerIntegerShr按位右移IntegerIntegerE1 Shl E2:E1乘以2的E2次方,E1 Shr E2:E1除以2的E2次方的整数部分,2.4.5 关系运算符用于比较两个量的值。结果为布尔值。运算符作用结果类型=等于Boolean不等于Boolean大于Boolean=大于或等于BooleanIn属于Boolean注意:对于数值相近的实型数据进行“”与“”运算时应谨慎,因为实型类型的表示是近似值,相近的实数的存储表示可能是一样的。可采用差的绝对值与一任

25、意小的数比较。例:X=Y运算应当写成Abs(X-Y)1e-6;而XY运算应写成Abs(X-Y)1e-6。2.4.6运算符优先级复杂表达式中的同一括号层内,各运算的先后次序取决于运算符的优先级。 按照操作数的个数可以将运算符分为两类:单目运算符和双目运算符。只有、和not是单目运算符,其他的为双目运算符。其中,+和-既可作为单目运算符(正数、负数)又可作为双目运算符(加、减)。单目运算符只能放在操作数的前面,双目运算符都放在两操作数的中间。对于可变类型的数据操作,大多数操作符都可以对其进行操作,只有、is和in例外。 级 别运 算 符第一级(最高). 第二级 not第三级* / div mod

26、and shl shr as第四级+ - or xor第五级(最低)= = in is确定优先级的3条基本原则:l 两个运算符之间的操作数总是首先参加高优级的运算,l 两个相等优先级运算符之间的操作数按从左到右的顺序参加运算,l 括号里面的表达式总是优先于单个运算符的运算。例: total:=10+15*2 div (4+2 xor 3)习题1简述Object Pascal中标识符的命名应遵循哪些规则。2. Object Pascal中提供了哪些类型运算符,在表达式中其优先级从高到低如何排列。3注释语句有哪几种形式?4什么是变量的作用域?根据变量的作用域,可将变量分为哪几类。第3章 Objec

27、t Pascal中的数据类型3.1 基本数据类型 基本数据类型分为:有序类型、浮点类型、时间日期类型、字符串类型。3.1.1 有序类型有序类型包括整型、字符型、布尔型、枚举型和子界型。有序类型是一种线性的数据结构,每个值都有唯一的前驱(除第一个)和唯一的后继(除最后一个)。每个数都有一个确定的序号,对整数而言该序号就是其本身,而对其他的有序类型(子界类型除外),黙认情况下,第一个值的序号为0,第二个为1,依次类推。用于处理有序类型的表达式或变量的常用函数函数参 数返 回 值备 注Ord有序类型变量或有序类型表达式有序类型表达式的序号不能带Int64类型的参数Pred有序类型变量或有序类型表达式

28、有序类型表达式的先行数不能在拥有write过程的属性上使用Succ有序类型变量或有序类型表达式有序类型表达式的后继数不能在拥有write过程的属性上使用High有序类型变量或有序类型表达式有序类型中序数最大的值可以用于shorstring类型或数组Low有序类型变量或有序类型表达式有序类型中序数最小的值可以用于shorstring类型或数组1. 整数类型类型取值范围存储格式Integer-有符号32位整数Cardinal0无符号32位整数Shortint-128127有符号8位整数Smallint-3276832767有符号16位整数Longint-有符号32位整数Int64-263263-l

29、有符号64位整数Byte0255无符号8位整数Word065535无符号16位整数Longword0无符号32位整数2. 字符类型字符型的类型标识符是Char。字符型的数据只能是单个字符,不能是一串字符。例如ABC,x=? 等都不是字符型的数据,而是字符串。字符类型占用字节数存储内容AnsiChar1存储一个Ansi字符,基本类型WideChar2存储一个Unicode字符,基本类型Char1同AnsiChar,Delphi将来的版本可能对应于WideChar,通用类型每个字符都对应于一个有序整数值,其值是由该字符在ASCII字符集中的位置所决定的。常用的处理字符的函数:l Chr(x:Byt

30、e):Char 该函数返回ASCII中某序数所代表的字符。它与Ord函数互为逆函数。l UpCase(Ch:Char) 该函数将小写字母转换为大写字母,当其参数不是小写字母时,该函数则会返回原来的字符。3. 布尔类型布尔类型占用字节数存储内容Boolean1通用类型ByteBool1基本类型WordBool2基本类型LongBool4基本类型布尔类型只有两种取值:true和false。Boolean类型变量的序数值只能为0和1,而其他布尔类型变量的序数可以是其他值。 布尔类型特性比较BooleanByteBool、WordBool、LongBoolFalseTrueFalseTrueOrd(F

31、alse)=0Ord(False)=0Ord(True)=1Ord(True)0Succ(False)=TrueSucc(False)=TrueSucc(True)=TrueSucc(True)=FalsePred(True)=FalsePred(False)=TruePred(False)=True Pred(True)=True4. 枚举类型枚举类型是用户自定义一组具有特定意义的值,即用一些标识符来表示一系列有序数。但是数目不能超过255。定义枚举类型的语法如下:typetypeName=(val1,.,valn)其中type是定义枚举类型的关键字,typeName是枚举类型名称,val1

32、,.,valn是用户自己定义的一组有意义的标识符,它们不能和已有保留字或者与它们同一模块的某些标志符相同例:type TSuit=(Club,Diamond,Heart,Spade); TOrientation=(North,South,East,West);枚举类型可以提取的每个值都对应于一个整数值。黙认情况下每个值都会根据定义的顺序(从0开始),向右依次增加1,也可以通过=重新定义每个枚举项的实际值。比如:type TSuit=(Club=1,Diamond=3,Heart=5,Spade=Club+Heart);此外,还可以只对一部分枚举项赋值:type TSuit=(Club=1,Di

33、amond=3,Heart,Spade);没有被赋值的枚举项会自动获得一个初始值,其规则是:最后一个明确赋值的枚举项的序列值加上1。注意:l 同一个枚举项不能出现在多个枚举类型中。如:type TSuit=(Club,Diamond,Heart,Spade); TBody=(Chest,Heart,Arm,Eye,Hand);l 不能直接用枚举类型中的元素进行运算操作。例:type TSuit=(Club,Diamond,Heart,Spade);var suit1,suit2,suit3:TSuit;begin suit1:=heart; suit2:=suit1; suit3:=Club+

34、Heart; /错误end;l 枚举值的输出常用case语句间接地输出l 枚举类型是有序数据类型,对其运算可以使用函数Ord、Succ、Pred及关系运算。5. 子界类型子界类型指的是某个有序类型(称为基类)的一个子集。定义子界类型的语法是:typetypeName=Low.High;其中typeName是子界类型名,Low是子界类型的下界,High是子界类型的上界,Low与High必须是同一种顺序类型,且Low=High。例:type SomeThing1=1.10; SomeThing2=a .z; TDay=(Sunday,Monday,Tuesday,Thursday,Friday,S

35、aturday); TWorkDay=Monday.Friday;注意:l 子界类型的上下界常数必须是同一类型,且必须是有序类型l 子界类型变量具有基类型数据的所有运算特性,但运算结果必须在所定义的上下界范围之内l 一个子界类型继承它的常量类型的运算符和标准函数,常量类型相容的不同子界类型可以混合运算,可以赋值l 子界类型的下上界必须是依次有序递增的3.1.2 浮点类型 浮点类型是全体带符号的实数的统称,它的值域几乎是无限的,它参与的运算几乎都是近似计算。Object Pascal语言中用Real标识通用实型。浮点类型有以下几种基本类型:类型范围有效位所占字节数Double5.0*10-324

36、1.7*1030815168Real482.9*10-391.7*103811126Single1.510-453.4*1038784Extended7.4*10-49321.1*192010Comp-263+l263-l19208Currency-5477.58085477.580719208浮点类型可用科学表示法表示,如:7E-2, 12.25E+6,但要注意指数必为整数,即使尾数为1,也不能省略,如E-2是错误的。系统提供的标准函数:(1)绝对值函数Abs(x):函数值为x的绝对值。(2)平方函数Sqr(x):函数值为x的平方。(3)正弦函数Sin(x):函数值为x的正弦,其中x的单位为

37、弧度。(4)余弦函数Cos(x):函数值为x的余弦,其中x的单位为弧度。(5)反正切函数Arctan(x):函数值为x的反正切,函数值的单位为弧度。(6)指数函数Exp(x):函数值为指数ex。(7)对数函数In(x):函数值为x的自然对数。(8)平方根函数Sqrt(x):函数值为x的平方根。(9)舍入函数Round(x):对实数x作四舍五入,结果为整数。例如:Round(5.6)的值为6,Round(-7.6) 的值为-8。(10)截尾取整函数Trunc(x):截去实数x的小数部分,结果为整数。例如:Trunc(-9.9)的值为-9,Trunc(7.8) 的值为7。(11)取整函数Int(x

38、):截去实数x的小数部分,返回整数部分,结果为实型。(12)取小数函数Frac(x):返回实数x的小数部分,结果为实型。3.1.3 时间日期类型日期时间型TDateTime在Object Pascal中实际是双精度浮点型(Double);其原型是:Type TDateTime =type Double;TDate =type TDateTime; TTime =type TDateTime;Object Pascal中规定:以1899年12月30日00:00时为准计为0,每增加1天,日期时间类型数据增1,每增加1小时,日期时间类型数据增1/24,每增加1分钟,日期时间类型数据增1/(24*60

39、)依次类推。因此,整数部分表示距离该日该时的天数。例:1899年12月30日 00:00 01900年1月1日 18:00 2.752005年9月14日 12:00 38609.52009年9月14日 15:00 40070.625日期型数据的运算:u D + N、或D N计算某个日期之前或之后若干时间的日期。其中,D是日期时间型的数据,N是实数。表达式的值为日期时间型数据。u D1-D2 计算两个日期时间的时间间隔。其中D1、D2为日期时间型数据,结果为实型数据。结果为负数则表示D1时间在D2时间之前,否则相反。标准函数和过程(1)Date():函数返回系统当前日期,无参数,返回数据是TDa

40、teTime型。(2)Time():函数返回系统当前时间,无参数,返回数据是TDateTime型。(3)Now():函数返回系统当前日期和时间,无参数,返回数据是TDateTime型。(4)StrToDate(日期字符串) :字符串转换为日期时间函数,返回数据是TDateTime型;StrToTime(时间字符串):参数为时间串,返回数据是TDateTime型; StrToDateTime(日期时间型串):参数为日期时间串,返回数据是TDateTime型。如:StrToDate(10/1/2004); StrToTime(12:50:24);StrToDateTime(10/1/2004 12

41、:00:00);(5)取日期时间中的部分数据,以下函数的参数均为日期时间型:Dateof(参数):返回去掉时间后的日期(TDateTime型);Timeof(参数):返回去掉日期后的时间(TDateTime型);Yearof(参数):返回日期的年份(Word型);Monthof(参数):返回日期的月份(Word型);Dayof(参数):返回日期的日号(Word型);Weekof(参数):返回日期在该年份是第几个星期,返回1到53之间的整数。(6)日期时间转换为字符串的函数,返回值为字符串,如:TimeToStr(参数):将时间数据转换为字符串返回;DateToStr(参数):将日期数据转换为字

42、符串返回;DateTimeTostr(参数) :将日期时间数据转换为字符串返回。此外,还有Hourof、Minuteof、Secondof、FormatDateTime、DecodeDate、DecodeTime、EncodeDate、EncodeTime等。3.1.4 字符串类型1. 字符串类型是用一对单引号括起来的一系列字符。字符串类型的表示范围和存储格式类型最大字符数字节数是否以Null结尾ShortString2552256B否AnsiString约2314B2GB是WideString约2304B2GB是l ShorString,短字符类型。短字符串中的每一个字符可以通过字符串名加字

43、符索引来访问,索引从0开始,索引0处的字符存放的是字符串的实际长度。 例如,s=Delphi7,s0为7,s1为D,l AnsiString,长字符类型,长度几乎是无限的,在声明后自动被初始化为空字符串,索引从1开始,在它最后一个字符后自动加一个NULL字符表示字符串结束。 以NULL结束的字符串主要用于跟Windows的API或其他语言的例程兼容,如: Var Caption,Message:AnsiString; begin Caption:=Hello World; Message:=我昨天看到你笑了_; MessageBox(0,Pchar(Message),Pchar(Caption

44、),MB_OK); end;l WideString,长字符类型,在Delphi3以后引入,主要用OLE编程。字符串的通用类型是String,黙认与AnsiString等同。 编译开关 String等同于 $H- ShorString $H+ AnsiString在Delphi的源程序代码中,可以设置一些编译指令,用于指示编译器程序代码的生成方式、中间文件、编译路径等。其一般形式如下:$编译指令 参数即,在“”或“(*”符号之后紧跟符号“$”,则开始编译指令的声明。例如,$R *.DFM指示窗体文件是与单元文件同名的DFM文件;又如,$WARNINGS OFF告诉编译器在编译期间不产生警告信息

45、。常规的编译指令也可以通过选择执行Delphi IDE的【Project】【Options】菜单项,在打开的“Project Options”对话框中的“Compile”页上进行设置。2. 常用字符串函数procedure SetLength(var S;NewLength:Integer);function Pos(Substr:string; S:string):Integer;function Copy(S; Index, Count: Integer): string;procedure Insert(Source: string; var S: string; Index: Inte

46、ger);procedure Delete(var S: string; Index, Count:Integer);function Trim(const S: string): string;3.2 复杂数据类型3.2.1 记录类型记录类型描述一组不同类型的数据元素集合,每个数据元素称为“域”。在定义一个记录类型时,需要指定每个数据域的数据类型。定义记录类型的语法如下:type 记录类型标识符 = record 域1: 类型1; 域2: 类型2; . 域n: 类型n;end;例如:type TPerson = record name : String10; id : String15; s

47、ex : Boolean; age : Byte; height, weight : Real; end;声明记录类型变量的形式为: var 记录变量:记录类型标识符;例如: var man1: Tperson;访问记录域,可以使用“变量名.域名”的形式,如,man1.sex,man1.age等,也可以使用with语句: with 记录变量名 do begin end;3.2.2 集合类型集合类型是一组相同类型元素的组合。引入集合的目的是为了把一组相关的对象作为一个整体参加运算,其中每一个对象称为集合的元素。集合类型通常用于检查一个值是否属于一个特定的集合,也常用于维护一系列

48、互不相同的处理对象。1. 声明集合类型type集合标识符=set of 基类型Object Pascal中规定了基类型只能是不超过256个有序值的集合,集合的元素的序数值必须介于0和255之间,且基类型的值域的上界必须大于或等于下界。例如:typeTSetA = set of Integer; / 错误TSetB = set of 255.300; / 错误TSetC = set of WideChar; / 错误TsetD = set of 10.50; / 正确TsetE= set of char; / 正确2. 集合类型常量变量集合变量的赋值用方括号表示。type TAges=set o

49、f 0.100; TUpCaseChars=set of A.Z;var MyAge:TAges; MyUpCaseChars:TUpCaseChars;begin MyAge:=11,22,33,44,55; MyUpCaseChars:=C,H,I,N,A;end;常量的定义与变量的定义相似:const MyAge=11,22,33,44,55; MyUpCaseChars=C,H,I,N,A;3. 集合的运算 关系运算集合类型的关系运算返回结果为布尔值。(1)运算符=、判断两个集合相同或不相同。如:表达式 1, 3, 5 = 3, 1, 5 的值为True;(2)= (包含)、= 3 的

50、值为True;(3)属于运算in,如:表达式 3 in 3,5 的值为True。 增删运算增删运算用+、-运算符或Include()和Exclude()来实现。procedure Include(var S: set of T; I:T);procedure Exclude(var S: set of T;I:T);3.2.3 指针类型指针类型的变量存储的是内存地址,利用指针可以灵活地访问内存中的数据。 1. 定义指针类型指针类型的声明格式如下:type 指针类型标识符 = 基类型;例:type Pbyte=Byte; PwideChar=WideChar; Pstu=Student; Stu

51、dent=record Name:string; Age :Integer; Sex :(Male,Female); End;指针可以指向任何数据类型。System和SysUtils单元声明了许多常用的标准指针。2. 操作指针类型 指针类型的运算符运算符作用操作数类型结果类型+将指针指向的地址增加一个偏移量Integer,PointerPointer-将指针指向的地址减少一个偏移量Integer,PointerPointer,Integer取指针指向地址的内容Pointer指针的基类型=判断两个指针是否指向同一个地址PointerBoolean判断两个指针是否指向不同的地址PointerBooleanprocedure New(var P: Pointer);New过程用于在应用程序的堆栈中为动态变量分配一块区域,并把该区域的地址赋值给指针变量P,所分配区域的大小由指针所指向

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论