1第1章Delphi基础知识1.1为什么选择DelphiDelphi是美国Borland公司推出的一种基于客户/服务器体系的Windows快速应用开发工具(RADRapidApplicationDevelopment),是一种面向对象的可视化编程工具,即根据Delphi的可视性,又结合ObjectPascal语言的编程技巧,可以开发出功能强大的Windows应用程序和数据库应用程序。Delphi是第一个集可视化开发环境、优化的源代码编译器和可扩展的数据库访问引擎于一身的Windows开发工具。它具有以下优点:1.优秀的可视化开发环境2.高效率的编译器3.结构良好的编程语言4.对数据库和网络编程的灵活支持5.层次清晰和可扩展的框架1.2Delphi发展史Delphi发展至今,从Delphi1、Delphi2到现在的Delphixe,不断添加和改进各种特性,功能越来越强大。Delphi1.01995年一个开发工具中的超级明星在Borland诞生了,这就是Delphi1.0。在Delphi1.0中Borland放弃了OWL(ObjectWindowLibrary),取而带之的是全新的VisualComponentLibrary,从此开始了组件(Component)技术的时代,其意义深远;Delphi1.0是完全面向对象的。它是Delphi的最早版本。Delphi2.01996年Delphi2.0完成了16位到32位的跨越,提供了32位操作系统的完整支持,只能在Windows95以上的操作系统中使用,它如同Delphi1.0一样大获成功。在Delphi2.0中Borland为它增加了可视的Form的继承,并且面向对象更彻底。由于所有函数支持虚函数特性,对程序编写和维护非常方便,大量类似的报表也采用了此技术。Delphi2.0中,增加了DataModules的概念,可以将数据包装在一个模块中,在系统启动时或空闲时将它打开,这样,所有使用这些Table的模块都可以公用它,避免重复打开和关闭。并且,由于所有数据Table位于一个模块中,非常便于管理维护和迁移升级。Delphi3.01997年:在微软COM/DCOM技术日益成熟的情况和企业对分布式应用程序开发工具的需求下,Borland的开发人员巧妙的平衡了二者的关系,使Delphi3.0成为Windows平台的第一款提供分布式开发的开发工具。Delphi4.01998年:由于决策的错误,Delphi4.0是一个不成熟的产品,其中有大量的bug,尽管Borland也不停的发补丁,但不稳定的恶名很快在delphi用户传开,delphi4.0给delphi蒙上了阴影,也使VisualBasic有了喘息之机。Delphi5.01999年:在失败的Delphi4以后,Borland小心的推出了Delphi5.0,重新建立delphi的声望,delphi受到delphi开发人员一致推崇。在这个版本中Delphi对IDE(集成开发环境)进行了很多改进,扩展了对数据库的支持(ADO和InterBase数据库),转换功能,框架概念以及很多的新组件与新特性。Delphi6.022001年:Delphi6添加了对如下特性的支持:对CLX(ComponentLibraryforCross-PlatformCLX)跨平台开发的支持,扩展的运行库(run-timelibrary),dbExpress数据库引擎,Web服务和杰出的XML支持,一个强大的Web开发框架,IDE的更多增强,大量的组件和类,delphi开始为向.net过渡做准备。Delphi7.02002年:Delphi7是Delphi向.net过渡的产品,在照顾老的使用者的同时,Borland在其中加入了对.net的支持,所以Delphi7可以同时编写原windows下和.net下的应用程序。2002年11月,borland为delphi7提供了修改后的vcl.net,使vcl组件可以在.net环境下使用。Delphi8.02003年:Delphi8for.NET集成开发环境提供了许多工具和特性以帮助你快速创建强大的.NET应用程序。它是为了与微软的visualstudio.Net竟争而设计的。Delphi8for.NET已经拥有C#的能力,同时仍然保留Delphi的易用性可以,但它只是一个测试版,一个过渡版。还不太完善。Delphi9.0(2005)2004年:Delphi9集成了starteam,caliberrm,Unittesting及Together部份的功能.加入了inline及forinloop等功能。它把Win32的开发工具全部整合到Delphi9中。Delphi9把BorlandDelphi.Net、BorlandDelphiWin32、BorlandC#等环境和功能集成成一个开发工具,因此可以在Win32和.NET开发环境中切换或同时进行。200510.0发布名称:BorlandDeveloperStudio(BDS)2006。集成C++Builder;ECO(EnterpriseCoreObjects)升级到ECOIII;集成TogetherforDelphi,可以在同一个IDE中进行UML开发;QAAudits和QAMetrics可以快速的把握专案的设计和代码的质量。2006TurboBorland将BDS2006拆分成几个独立的版本(Delphiforwin32、Delphifor.net、C#、C++Builder),而且不能同时安装两个不同的版本。由于Borland的IDE生产部份独立成为一家名为codegear的公司,所以这个版本是以Borland名义推出的最后一个版本。200711.0正式名称:CodeGearRADStudio-Delphi2007。20085.7Borland正式宣布将CodeGear子公司出售给Embarcadero(易博龙)技术公司。20088.25Embarcadero发布CodeGearDelphi2009Pre-release版。20098.25Embarcadero发布CodeGear.RAD.Studio.2010版2010年:发布EmbarcaderoRADStudio2011版,官方名称为RADStudioXE1.3第一个程序开发一个应用程序一般要经过以下几个阶段:需求分析与总体设计。此阶段的任务是让程序开发人员充分理解系统的需求和任务,给出实现这些需求与任务的总体方案。代码开发与程序调试。此阶段按照设计方案使用编程语言开发出应用程序。在开发的过程中反复调试以修改语法错误和逻辑错误,最终生成符合要求的可执行文件。投入运行与程序维护。经测试无误的应用程序就可以投入运行了。程序的维护是为了保证程序能正确地运行。在代码开发与程序调试阶段,使用Delphi时一般包括3个步骤:程序窗体设计:包括对窗体中组件的设计。程序代码设计:设计窗体和窗体中组件的各种操作和响应事件的处理代码。编译和调试程序:对程序代码进行编译,修改各种语法错误和逻辑错误,生成正确的可执行代码。3第2章Delphi语言基础2.1编程风格2.1.1注释块注释:通常被用在版权注释中,也被用来注释掉一些代码行。{注释}(*注释*)单行注释:作用域只是它所在的一行,使用方便。//2.1.2命名命名对象可以是常量、变量、函数、过程等用户自已书写的定义的标识。在ObjectPascalj里不分大小写。命名原则:用意思明确的英文单词或者词组命名,且首个字母大写,若是多个单词(不能在单词间插入空格),采用驼峰格式。例:jklasdf//没有意义Mylongidentifier//可读性差Thisismuchmorereadableroutinename//可读性差MyLongIdentifierThisIsMuchMoreReadableRoutineName注意:命名的第一个字母尽量不要用T,F,I这三个字母。2.1.3空白源代码中的空格、空行及制表符等称为空白区。使用空白可提高程序的可读性,又不影响编译。2.1.4缩进使程序便于阅读理解。不要在源代码中保留Tab字符。2.2基本概念2.2.1进制二进制,十进制,十六进制(加$符号)2.2.2保留字程序如同一篇文章,由字符组成单词,再由单词和符号构成句子——语句。其中有一类单词,它们具有特定的语法含义,称为保留字(reservedwords)。程序员不得重新定义保留字的语义。常用的保留字如: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等都是非法的标识符。4标准标识符:在ObjectPascal语言中,有一类标识符是系统预先定义的,它们用于标识系统预先定义的标准函数、标准过程、标准类型、标准常量及标准文件等。标准常量,如False、True等。标准类型,如Boolean、Char、String、TDateTime等。标准函数,如Abs、Eof、ShowMessage、Sqrt等。标准过程,如Dispose、New、Read、Readln、Reset等。标准文件,如Input、Output等。注意:当程序中自定义的标识符与其引用的单元中所定义的重名时,如果要访问被引用单元的标识符,则必须指示为外部单元的标识符,不然访问的是本程序定义的标识符。2.3常量与变量二者都是存储数据的载体,不同的是常量中的值不能改变,变量中的值则随着程序的运行而改变。一般位于函数或者过程的起始位置定义。2.3.1变量变量是程序设计最基本的要素,是实现人与计算机交流的最基本的媒介,变量中可以存放字符、数值、日期或对象等。1.变量的声明变量说明的一般形式为:var变量标识符列表:类型标识符;其中,变量标识符列表中可以包含一个或多个变量标识符,若有多个变量标识符时,相邻的两个变量标识符之间应使用逗号“,”隔开;类型标识符用以指定这些变量的数据类型。变量说明以保留字var开头。一个变量说明部分可包含多个变量的说明,每个变量说明末尾均有分号。一个变量在某一个时刻有且仅有一个值。2.变量的命名和格式与标识符类似3.局部变量和全局变量从作用范围来划分:局部变量和全局变量,在过程或函数内部声明的变量称为局部变量,否则称之为全局变量。局部变量在它所在的过程或函数执行完后由系统自动释放,全局变量在程序被关闭时释放。在声明变量时,局部变量不能初始化,全局变量可以初始化,但在声明多个同类型变量时不能初始化。2.3.2常量1.字面常量(1)整型常量即整数,如3、10000、-90。在ObjectPascal中十六进制形式表示整型常量以字符$开头,如$20相当于十进制的32。(2)实型常量即实数,例如,6.6、0.77e+4。后者的表示方法称为指数记数法或科学记数法,0.77e+4表示0.77×104。Pascal语言中的实数表示和日常书写的形式基本相似,但要注意以下几点:①小数点前后一定要有数字。②数中不允许包含空格字符与逗号。例如1,000,000是不合语法的。③没有分式表示。5④使用指数记数法时,e前面应有整数或实数,e后面必须是整数。例如:88.0、-0.8、1e+23、-3.45e-6都是正确的实数表示法,而88.、.66、4.4e5.5、e6则是不正确的。(3)布尔常量它是指False和True这两个值,False表示逻辑值“假”,True表示逻辑值“真”。(4)字符常量字符常量有两种表示方式:①用单引号对括起来的单个字符,如'a'、'*'、