Delphi教学课件.doc_第1页
Delphi教学课件.doc_第2页
Delphi教学课件.doc_第3页
Delphi教学课件.doc_第4页
Delphi教学课件.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第一章 Delphi7入门1.1 Delphi7 简介1.1.1 何为Delphi?Delphi实际上是Object Pascal语言的一种版本,它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格按照设计运行。程序员的工作只是在“骨架”中加入适当的代码。1.2.2 Delphi的特点业界如此形容Delphi:真正的程序员用C,聪明的程序员用Delphi。到底什么使得Delphi如此优秀?和别的编程工具相比,为什么程序员更愿意选择Delphi?这应该归结于它的高效性。要创建Windows应用程序,使用Delphi是目前能够找到的最为简捷的途径。决定应用软件开发工具效率的因素可以归结为一下五点:可视化开发环境的性能;编译器的速度和编译代码的效率;编程语言的功能及其复杂性;数据库结构的灵活性和可扩展性;框架对设计和使用模式的扩充。Delphi的窗体设计器与众不同之处在于,Delphi是建立在一个真正面向对象的框架结构基础之上的。这样对基类所做的改变都传递给所有的派生类。这里涉及一项关键技术就是VFI(Visual Form Inheritance),即可视化窗体继承。Delphi的编译器速度是最快的,比C+快几倍,且编译代码效率高。Delphi的主要特点体现在以下几个方面:1.Delphi为32位应用程序,因此其性能就像装上了涡轮引擎一样强劲有力,使用它可开发出功能强大的应用程序。2.Delphi的编译器是目前世界上最快的32位本地代码(源代码)编译器。使用这种编译器产生的运行文件EXE是独立的,不需要链接运行时的解释器DLL。3.Delphi可充分发挥Windows 95/98/2000/XP和Windows NT的强大功能。4.Delphi提供了多种32位可视组件库。5.Delphi是一面向对象的程序设计语言,因此Delphi可做到可视窗体的继承。6.Delphi采用3层数据管理模式(数据层、对象层、应用程序层),把诸如数据模型、业务规则、窗体、对象等集中存储在对象存储库中。7.应用程序可通过在Delphi中使用Borland公司提供的数据引擎(BDE)功能,可以毫无障碍地使用多种数据库,不论是大型数据库还是PC机中的数据库,如Oracle、Sybase、Informix、Interbase、Microsoft SQL Server、Paradox、Xbase系列数据库。8.Delphi中的数据感知功能,可使用户在开发应用程序时就可看到数据库的动态变化。9.使用Delphi提供的数据库浏览器,可使用户在Delphi的集成开发环境中,可以浏览、修改、索引数据库。10.为了便于维护程序,Delphi将数据访问与业务规则从程序中分离出来,集中存储在数据模型对象中。当业务规则需要修改时,只需在数据模型级进行修改。程序运行调用这些数据模型时,修改的结果会自动反映在应用程序中。此外,在Delphi中,为用户免费提供了2个用户许可的本地Interbase(数据库管理系统)。通过开发流程来认识IDE:exedllbpldcudcp代码编辑编译连接运行调试pasdpkdprdfm通过测试发布界面设计建模Delphi7针对不同用户的需要,推出了四种版本,分别为:个人版(Borland Delphi7 Personal)专业版(Borland Delphi7 Studio Professional)企业版(Borland Delphi7 Studio Enterprise) 开发版(Borland Delphi7 Studio Architect)在企业版套件中,包含有ModelMaker这一基于UML(统一建模语言,Unified Model Language)的双向CASE工具,可以用于面向对象系统的建模和代码生成。1.2 Delphi 7的安装1.2.1 Delphi 7环境要求在安装Delphi 7之前,请先检查一下计算机的软硬件配置是否符合如下的最低要求:操作系统:Microsoft Windows 98/2000/XP。CPU:Pentium 233MHz或者更高的处理器。内存容量:64MB(推荐使用128MB以上)。CD-ROM驱动器。VGA或更高分辨率的显示器。硬盘剩余容量的要求:最小化安装124MB,完整安装需要450MB。1.2.2 Delphi 7安装Delphi 7采用智能化安装方式,具体步骤如下:(1)把Delphi 7的安装光盘放入光驱中,系统会自动运行安装程序,显示安装画面。(2)用鼠标单击“Delphi”选项,出现安装向导进度条后,进入欢迎窗口。(3)单击“Next”按钮,随后进入Password Dialog窗口,输入系列码、授权码,然后单击“Next”按钮。(4)打开安装软件认证协议窗口,单击“Yes”按钮。(5)进入消息Information窗口,单击“Next”按钮。(6)指定Delphi 7安装方式,Delphi 7提供了三种选择:典型安装、精简安装、自定义安装。(7)选择完成后单击“Next”按钮,打开外部安装选择窗口,选择后单击“Next”按钮。(8)进入设定程序安装路径窗口,如图所示。(9)单击“Next”按钮,进入安装警告窗口,如图所示。(10)单击“Install”按钮,开始向硬盘指定路径拷贝相应文件,屏幕出现进度条,显示安装进度窗口,如图所示。(11)完成后显示安装完成窗口,如图所示。(12)单击“Finish”按钮,至此安装过程全部完成。1.2.3 Delphi 7卸载(1)依次选择的“开始”“设置”“控制面板”“添加/删除”项,出现如图1-8所示窗口。(2)在列表中选择“Borland Delphi 7”选项,单击“Next”按钮。(3)打开卸载模式选择窗口。(4)单击“Next”按钮,随后出现确认窗口,单击“Remove”按钮,出现程序卸载进度条。(5)完成后,出现完成画面,如图1-11所示。单击“Finish”按钮,程序卸载完成。1.3 Delphi的集成开发环境1.3.1 用户界面Delphi的用户界面包括五个部分,它们分别是主窗口、对象树状列表、对象检视器、窗体设计器、代码编辑器。下面介绍各部分的构成和功能。1.主窗口(Main Form)Delphi的主窗口位于屏幕的上端,包括标题栏、菜单栏、工具栏和组件面板。标题栏上显示的是当前工作的项目(Project)的名称。所谓项目,是指一个独立应用程序中所包含的文件的总称。菜单栏是下拉式主菜单,包括【File】、【Edit】、【Search】等11项下拉式菜单,这些菜单融合了Delphi程序开发的全部命令和功能。File:新建、打开和保存Delphi应用程序中各个项目和文件的命令。Edit:提供代码编辑的各种命令。Search:搜索、替代和定位字符串。View:查看各窗口和项目中的窗体或单元文件。Project:管理、编译和配置项目文件。Run:调试应用程序。Component:建立和安装组件以及定制自己的组件板。DataBase:开发数据库应用程序的各种工具。Tools:环境设置和一些外挂工具。Window:切换集成环境中的各种窗口。Help:提供Delphi帮助文件。工具栏位于主窗口的左下部,由两排共14个快速按钮组成,这些按钮是最常用命令和功能的快捷方式,工具栏允许用户根据需要来定制。工具栏加速按钮说明、工具栏右键配置:Standard:新建、打开、保存文件或往工程文件中添加、删除文件。View:新建窗体或在窗体和单元文件之间进行切换。Debug:运行、停止、跟踪应用程序或设置单步执行。Custom:提供帮助文档。Desktop:保存、切换桌面。组件面板实际上是一个选项卡盒,位于菜单栏的下方,包括【Standard】、【Additional】和【Win32】等30多个选项卡,每个选项卡又包含若干组件,它们都是以图标形式显示出来。组件是建立应用程序最常用的元素。用户可以定制组件面板的页面和各页面所包含的组件,选择【Tools】菜单的【Environment Options】命令激活环境设置对话框来进行设置。Standard:标准控件和菜单。Additional:自定义的控件。Win32:32位Windows常用组件。System:进行系统级访问的组件和控件,如定时器等。2.对象树状列表该窗口用来显示用户使用的所有可视化组件,对于管理程序、明确各组件间的关系有很大帮助。3.对象检视器(Object Inspector)对象检视器(Object Inspector)是用来描述组件对象的属性特征和行为事件的。它是应用程序设计过程中最重要的一个工具,正是由于它将生动友好的可视化窗体于原本枯燥无味的程序多名联系到了一起,使得Windows应用程序的开发变得如此轻松。对象检视器包含两个页面,分别是属性(Properties)页面和事件(Events)页面。当一个组件添加到窗体后,对象检视器中就会添加这一组件对象,并产生这一组件对象的属性列表和与这一组件对象相关的事件列表。属性页面列出了组件的Published属性。部分属性前有“+”号,称之为多重属性。主要显示当前应用程序设计工程中所设计的各种组件及各种组件之间的关系。可以用对象检视器窗口在窗体的各个组件间进行快速切换。4.窗体设计器窗体设计器作为IDE的一个部分,主要通过向窗体中添加组件以及更改窗体及组件的属性来完成窗体的设计。快捷键中的View as Text命令可查看窗体文件。【注】双向性。5.代码编辑器代码编辑器一般隐藏在窗体设计器的下面,可以通过以下几种方法来显示它:通过View菜单的【Code Explorer】命令或【Toggle Form/Unit】命令;单击快捷工具栏中的【Form/Unit】转换快捷键;选择任意对代码操作的命令。1.3.2 编辑以编辑一个控制台应用程序和一个Windows应用程序为例。(1)控制台应用程序(例1_01)var i: Integer;begin Randomize; for i := 0 to 9 do WriteLn(i + 1: 4, Random(100): 10); ReadLn;end.(2)Windows应用程序(例1_02)procedure TForm1.Button1Click(Sender: TObject);var i: Integer;begin Randomize; ListBox1.Clear; for i := 0 to 9 do ListBox1.Items.Add(Format(%4d%10d, i + 1, Random(100);end;讨论:(1)应用程序组成 工程、单元、CodeInsight代码模版在Tools菜单的Editor Options 中的Code InsightCode Template 部分的Code中编写代码的时候加个|表明光标定位处Ctrl+J:在单元中编写代码的时候,敲入模版 按下Ctrl+J自动产生模版代码(2)dpr、pas、dfm文件结构(3)代码编辑和窗体设计(4)File、Edit、Search、View菜单1.3.3 编译、连接、运行Project菜单的Build和Compile(Ctrl+F9)Run菜单的Run(F9)编译、连接的设置Build:不生成目标文件;没有改变,不做任何工作,和环境的改变没有关系。Compile:Syntax check project(语法检查)、Compile 工程组。Run:Run(F9)有无Modify,生成目标文件,并运行。1.3.4 调试断点设置F5(Toggle),右键debug。 运行到光标处:F4(临时断点) 。 两种单步(F8(Step Over)、F7(Trace Into),F8跳过例程Routine。Project-Option-Use Debug Dcus可以进入系统routine。几个调试窗口:Debug Windows:Breakpoints、Call Stack等。/Ctrl + F2 : reset program1.3.5 四大配置工具1.project-option(工程菜单选项命令):1)仅对当前工程有效,如果选中了Options 中Default则对以后产生的工程有效。后面三个针对所有工程的。2)动态创建窗体和自动创建窗体。3)Compile 中选中Optimization可以消除无用代码,如for I:=0 to 1 do。4)Extended syntax 如果去掉则 function中的result不能用。Record field alignment:分配变量的对齐方式字节为单位 8指8字节比较超前。Forms Tab:Auto-Create Forms:一运行自动创建,静态窗体。以下对所有工程有效2.tools-evironment(工具菜单环境选项命令):preferences、designer(Show component caption指非可视组件)preferences Docking Auto Drag Docking 窗口拖放自动融合LibraryLibrary path :常用的路径设置,使用所有工程3.tools-editor(工具菜单编辑器选项命令)。4.tools-debug(工具菜单调试器选项命令)。1.4 创建一个简单的工程1.4.1 应用程序的开发步骤(1)创建应用程序,建立窗体(2)设计应用程序界面,即在窗体上添加组件。(3)设置组件属性。(4)编写响应事件处理程序代码。(5)保存文件。(6)编译、运行。1.4.2 实例(例1_03)单元结构:扩展名为pas单元头接口说明部分实现部分工程结构:(Project-View Source)扩展名为dpr工程说明文件,编译为EXE文件,若为生成的目标程序为动态连接库,则关键字为Library。Uses子句列出工程文件引用的其它文件Begin与end之间的语句为应用程序将有执行的主流程代码。1.5 Delphi的文件结构Delphi的每个应用程序都是一个工程,它由一个或多个文件以及工程文件组成。组成工程的几种文件包括:单元、窗体、编译过的单元、配置、选项、包及备份文件。下面介绍各个文件的作用。1.5.1 工程文件(.dpr)工程文件具有.dpr的扩展名,在本质上它包含了应用程序的入口点,位于begin和end之间,由程序头、单元列表部分和执行部分组成。可在“Project”菜单下的“View Source”看到如下代码:program Project1;uses Forms, Unit1 in Unit1.pas Form1;$R *.resbegin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;end.注意:一般不允许修改工程文件。1.5.2 单元文件(.pas)单元文件中存放的是用户编写的代码。单元文件的结构如下:unit Unit1;/单元头interfaceuses单元列表接口部分implementation$R *.dfmuses 单元列表实现部分initialization /user must add初始化部分finalization /user must add结束部分end.单元文件中保存了Delphi程序的基本模块,主要由三部分构成:单元头、接口部分和实现部分。1.单元头:指明单元的名称。2.接口部分:接口部分从interface开始到implementation结束。在接口部分有uses语句,还可以用来声明常量、数据类型、变量、过程和函数等。如果接口部分有uses语句,则必须紧跟保留字interface,然后才可以有其它语句。在接口部分声明常量、数据类型、变量、过程和函数等,在整个工程中都可以被访问。3.实现部分:实现部分从implementation开始到保留字initialization结束。如果实现部分有uses语句,则必须紧跟implementation,然后才有其它语句。在实现部分也可以用来声明常量、数据类型、变量、过程和函数等,但这些声明的量,只能在本单元中被访问,不可以被其它单元被访问。另外,实现部分还可以单元过程体和函数体。在一个单元的interface和implementation部分都可以定义类,但类的方法必须在implementation部分实现。4.初始化部分:初始化部分从保留字initialization开始到finalization结束。初始化部分中可以进行一些初始化工作,如给定义的变量初始化、分配内存等。5.结束部分:结束部分从保留字finalization开始。结束部分的工作与初始化部分的工作基本相对,可以进行一些结束前的工作,如释放内存资源等。只有在单元中出现了初始化部分才可以出现结束部分。1.5.3 窗体文件(.dfm)窗体与数据模块的扩展名为.dfm,且与.pas相关联。.dfm为文本文件,可查看。1.5.4 配置与选项文件(.dof)当改动【Project Options】设置时,Delphi把改动存储在一个具有.dof扩展名的文件中。1.5.5 中间编译单元(.dcu)编译过的单元是不可执行的,以.dcu为扩展名。在建立应用程序的链接阶段,所有的.dcu文件链接起来成为可执行文件。这些文件是可以删除的,但最好让Delphi来管理这些文件。1.5.6 备份文件(.pas)无论何时,只要改动了一个文件并且进行了保存,Delphi都会自动对该文件已存在的版本进行备份。即是此文件。1.5.7 包文件(.dpk)包文件是一种特殊的工程,扩展名为.dpk。包文件是一种定义组件包的工程。1.5.8 应用程序文件(.dll,.exe,.ocx)Delphi能够创建所有种类的应用程序文件,包括动态链接库文件(.dll)、可执行文件(.exe)和ActiveX控件(.ocx)。思考题:1.Delphi的特点主要有哪些?2.Delphi集成开发环境由哪几部分组成?3.Delphi的文件主要有哪几种类型?4.写出Delphi的标准单元文件格式,并说明每一个部分的作用。第二章 面向对象的Pascal语言Delphi所使用的语言是Object Pascal,Object Pascal语言是在传统的Pascal语言的基础上发展而来的,它继承了传统的Pascal语言语法严谨、数据结构多样的特征,同时,也融入了面向对象编程的语法要素,从而使Object Pascal成为一种很好的面向对象的语言。Object Pascal的优点主要体现在如下几个方面。数据类型丰富利用Object Pascal编写的程序更易于阅读既支持结构化程序设计,又支持面向对象程序设计Object Pascal编程速度快可以进行模块化程序设计2.1 基本语法元素2.1.1 标识符1.用于表示常量、类型、变量、子例程、域、属性、程序、单元、库、包的名称。2.规则大小写不敏感;字母、数字、下划线,但不能以数字开头;255个字符有效;不能使用保留字,建议不要使用指示字。3.命名约定常量名:全大写;类型名:T、E、I;对象名:edtName、btnCalc、tblCustomer、dspEmployee(数据集提供器);枚举常量标识符:mnOne、mnTwo;事件属性名:OnClick、OnMouseDown等;变量、域名等用名词(如Area、CountryName)、例程名等用动宾结构(如DoAdd、DrawCircle)(大小写问题);简单循环变量,单字母。2.1.2 注释组合花括号注解“”和“”圆括号+星号注解“(*”和“*)”C+风格的双斜杠注解“/”2.1.3 保留字和指示字65个保留字(Reserved Words)+ 4个p和on。表1-1 Object Pascal的保留字保留字保留字保留字anddispinterfaceasasmbegincaseclassconstructorconstarraydowntodivdodestructorelseendexceptexportsfilefinalizationfinallyforfunctiongotoifimplementationininheritedobjectinlineisinterfacelabellibrarymodnilnotinitializationoforoutpackedvarprogrampropertyraiserecordrepeatset procedureshlshrstringthentothreadvartrytypeunituntiusesresourcestringwhilelwithxor44个指示字在特定上下文中有特定含义。如message、abstract、virtual、dynamic、override和overload等。表1-2 Object Pascal的指令符指令符指令符指令符absoluteabstractassemblerautomatedcdeclcontainsdefaultdispiddynamicexportexternalfarforwardimplementsindexmessa genamenearnodefaultoverloadoverridepackagepascalprivateprotectedpublicpublishedreadreadonlyregisterreintroducerequiresresidentsafecallstdcallstoredvirtualwritewriteonly2.1.4 数字数据+8、8、-8、8.0、-8.9等7e-2、12.25E6等$F(十六进制数)2.1.5 字符和字符串数据字符要加单引号或#引出。字符串分为引用串和控制串。只有引用串需要用单引号定界符。控制串需要#来引导。引用串:由不超过255个字符的扩展ASCII字符集中的字符序列组成,写在一行,且头和尾必须有号。控制串:由一个或多个控制字符构成的字符序列组成,控制字符由“#”开始,与它后面的整数常量构成,其范围为0255,代表ASCII码字符,如#98#111#117为you。DelphiI cant. /连用问题 Line 1#13#$ALine 2Line 1 + #13 + #$A + Line 2(例2_01)2.2数据类型计算机程序代码所加工处理的对象就是各种各样的数据,而各种数据的特征就是由其所属的数据类型来刻划的。数据类型不仅可以确定某一类数据的表示形式和取值范围,而且也确定了对该类数据可以进行的有效操作。Delphi是强类型的语言,共有17种数据类型。重点掌握其分类、用途、可以执行的运算、存储分配和类型转换等问题。Object Pascal语言是一个强类型语言,它可以区分不同的数据类型,而不能随便使用一种数据类型替代另一种数据类型。这样做的优点是有利于让编译器合法有效的处理数据而不会出现硬件错误。当数据类型不能满足你的要求时,你可以自定义所需要的数据类型。Object Pascal语言有三种分类方法:一些类型是预定义的类型,不需要声明,编译器可以自动识别这些类型。我们使用的绝大多数类型都是预定义的类型。类型可以分为基本类型和通用类型。基本类型的格式在所有Object Pascal语言中都保持一致,不依赖于所用到的操作系统,如CPU等。通用类型则依赖于程序运行的平台和硬件。大多数预定义类型是基本类型,也有少数预定义类型是通用类型,如integer,character,string和pointer。在需要的时候,使用通用类型可以提高程序性能使程序更加简洁。然而,从一种通用类型到另一种通用类型存储格式的转变将导致兼容性的问题。类型可分为简单类型、字符串类型、结构类型、指针类型、过程与函数类型和变体类型。Object Pascal语言的数据类型结构如下图所示。数据类型SimpleStringStructuredPointerProcedurealVariantOrdinalIntegerCharecterBooleanEnumeratedSubrangeRealSetArrayRecordFileClassClass ReferenceInterface2.2.1 五种标准数据类型(Delphi内建声明的数据类型,可直接声明其变量)整、实、字符、字符串、布尔1.整型(1)存储格式和取值范围有符号数无符号数8位ShortIntByte16位SmallIntWord32位LongIntInteger(通用)LongWordCardinal(通用)64位Int64(2)运算符算术运算符:+、-、*、div、mod其中div为整除运算,是两个整数相除,结果取商的整数部分,也是整数。Mod为取模运算,是两个整数相除,取余数,余数的符号与被除数相同。如:6 div 3=2 6 div 4=1 6 div 8=0 -6 div 4=-16 mod 3=0 6 mod 4=2 6 mod 8=6 -6 mod 4=-2关系运算符:=、=、=其结果为布尔值。整数的逻辑运算符:not、and、or、xornot为逐位取反。and为逐位相与,其规则是1与1的值为1,其余相与都为0。Or为逐位相或,其规则是0或0的值为0,其余相或都为1。Xor为逐位相异或,其规则是相同为0,不同为1。左、右移位运算符:Shl、ShrShl运算符的格式为:A Shl n,表示将整数A的各位向左移n位,高位溢出,低位补0。Shr运算符的格式为:A Shr n,表示将整数A的各位向右移n位,低位溢出,高位补0。(3)标准函数Abs()、Sqr()平方函数、Pred()、Succ()等。如:begin Writeln(Byte: ,SizeOf(Byte):3); Write(Min:,Low(Byte):20); Writeln( High:,High(Byte):20); end.Var n:ShortInt;Begin n:=High(n); n:=n+1; Writeln(High(ShortInt)+1=,n); n:=Low(n); n:=n-1; Writeln(Low(ShortInt)-1=,n); ReadLn;End.2.实型(1)存储格式和取值范围类 型字节数取 值 范 围Single41.510-393.41038Extended103.610-49511.1104932Double85.010-3241.710308Currency8-922337203685477.5808922337203685477.5807Real(通用)85.010-3241.710308(2)运算符算术运算符:+、-、*、/关系运算符:=、=、=(3)标准函数Abs()、Sqr()、Sin()、Sqrt()等。Round():Round(2.5)=2 Round(3.5)=4Trunc():Trunc(-6.7)=-6 Trunc(7.8)=7Int():Int(-6.7)=-6.0 Int(7.8)=7.0Frac():Frac(-6.7)=-0.7 Frac(7.8)=0.8RoundTo(54.6573,-2)=54.663.字符型(1)存储格式和取值范围类 型名 称字节数取 值 范 围AnsiCharAnsi字符型1扩展ANSI字符集WideChar宽字符型2UniCode字符集Char字符型1(2)扩展ANSI字符集(2)运算符关系运算符:=、=、=(3)标准函数Pred()、Succ()、Ord()。4.字符串型(1)存储格式和取值范围类 型名 称最大长度是否以Null结尾ShortString短字符串型28-1个字符不是AnsiString长字符串型231个字符是WideString宽字符串型230个字符是String字符串型231个字符不一定字符串是代表一组字符的变量类型,每一种语言都有自己的字符串类型的存储和使用方法。在Object Pascal中,通常用一对单引号来把字符串括起来,共有以下几种。AnsiString这是Pascal缺省的字符串类型,它由AnsiChar字符组成,其长度几乎没有限制,同时与null结束的字符串相兼容。ShortString保留该类型是为了向后兼容Delphi,它的长度限制在255个字符内。WideString功能上类似于AnsiString但它是由WideChar字符组成的。PChar指向null结束的Char字符串的指针,类似于C语言的Char*或lpstr类型。PAnsiChar指向null结束的AnsiChar字符串的指针。PWideChar指向null结束的WideChar字符串的指针。(例2_02)1)AnsiString类型:该类型是在Delphi 2.0开始引入的,它突破了255个字符的限制,它的内存分配是动态的并有自动回收功能,正是因为这个功能AnsiString有时被称为生存期自管理类型。Object Pascal能根据需要为字符串分配空间,且字符串以null结尾。2)ShortString类型:该类型是Delphi 1.0中字符串的类型。在内存中,字符串就是一个字符数组,在字符串的第0个元素中放了字符串的长度,紧跟在后面的字符串就是字符串本身。ShortString缺省的最大长度为256个字节,这表示在ShortString中不能有大于255个字符(255+1=256)。相对于AnsiString来说,用ShortString是相当随意的,因为编译器会根据需要为它分配内存,所以不用担心中间结果是不是预先分配内存。3)WideString类型:该类型像AnsiString一样是生存期自管理类型,它们都能动态分配、自动回收并且彼此能互相兼容,但它们也有区别,在此不作介绍。(2)运算符字符串合并运算符+可以使用+运算符或Concat()函数来连接两个字符串,推荐使用+运算符,因为Concat()函数主要是用来向后兼容,如:使用+运算符var s1,s2:string;begins1:=Hello;s2:=World;s1:=s1+s2;/Hello Worldend.使用Concat()函数var s1,s2:string;begins1:=Hello;s2:=World;s1:=Concat(s1,s2);/Hello Worldend.关系运算符:=、=、=(3)标准函数下面介绍几个包含在SysUtil单元的过程或函数,它们用来出来字符串:Copy()返回一个字符串中的子字符串;Delete()在一个字符串从一个指定位置起删除一定数目的字符;Insert()在一个字符串中插入一个字符串;Length()返回一个字符串的长度;Pos()返回一个字符串在一个字符串中的位置,即索引值。LeftStr()取左子串RightStr()取右子串TrimLeft()TrimRight()Trim()String既可是ShortChar类型也可是AnsiChar类型,默认是AnsiChar类型。AnsiChar类型字符串以Null结尾,可为其动态分配内存,也可用SetLength()函数来分配一块恰当的内存。ShortString类型,静态分配256个字节,第一字节放长度。String类型,动态分配内存,前四字节放nil,若赋值则为一个指针,字符放在堆区再引用。可用SizeOf()函数取得其字节数。String100,内存中占101字节,第一个元素放长度。例如:Var s1:ShortString; S2:String; S3:string100;BeginShowMessage(inttostr(SizeOf(s1);ShowMessage(inttostr(SizeOf(s2);ShowMessage(inttostr(SizeOf(s3);End;(例2_03)5.布尔型(1)存储格式和取值范围类 型名 称字节数取 值ByteBool字节布尔型10(False)或非0(True)WordBool字布尔型20(False)或非0(True)LongBool长布尔型40(False)或非0(True)Boolean布尔型1False或True(2)运算符关系运算符:=、=、=逻辑运算:not、and、or、xor(3)标准函数Pred():Pred(True)的值为False Pred(False)无意义Succ():Succ(False)的值为True Succ(True)无意义Ord():Ord(False)的值为0 Ord(True)的值为12.2.2 五种有序数据类型(直接前趋和直接后继、有些场合只能使用有序类型,如循环变量和case条件)整、字符、布尔、枚举、子界Delphi为我们提供了下列操作有序类型及其本来的标准例程。Ord函数:返回有序表达式的序号。Pred函数:返回有序表达式的直接前驱值。Succ函数:返回有序表达式的直接后继值。High函数:返回有序表达式或有序类型的最大值。Low函数:返回有序表达式或有序类型的最小值。Inc过程:有序变量增量。Dec过程:有序变量减量。1.整型通用:32位机上是32位,64位机上是64位。其序号为其自身。Ord(5)为5;Predecessor(5)为4;Successor(5)为6。(例2_04)(例2_05)2.字符型AnsiChar等价Char占1个字节,WideChar占2个字节。其序号为字符的ASCII码值。Ord(B)为66;Pred(B)为字符A;Succ(B)为字符C。(例2_06)3.布尔型其序号为:Ord(False)为0;Ord(True)为1;4.枚举型其序号从0开始。但可人为设定。(例2_07)5.子界型其序号同其基类型(其基类型必须是有序类型)。type MyEnum = (meRed, meGreen, meBlue, meYellow, meBlack, meWhite); MySub1 = meBlue.meBlack; MySub2 = 4.8; MySub3 = a.c; MySub4 = False.True;var S1: MySub1; S2: MySub2; S3: MySub3; S4: MySub4;begin S1 := meBlack; WriteLn(Ord(S1); /显示4 S2 := 6; WriteLn(Ord(S2); /显示6 S3 := b; WriteLn(Ord(S3); /显示98 S4 := False; WriteLn(Ord(S4); /显示0 ReadLn;end.2.2.3 七种结构数据类型数组(array)、记录(record)、集合(set)、文件(TextFile、File of、File)、类(class)、类引用(class of)、接口(interface)。1.array(1)静态数组:如:typea1=array17.10 of 基类型; /4*SizeOf()字节a2=array7.10,3.8 of Byte; /24* SizeOf()字节a3=array1.4,1.5 of real; /二维整型数组,20个元素a4=array1.4,1.5,1.20 of real;VarS1:a2;例如:vara:array1.8 of real;i:integer;Beginfor i=1 to 8 doai:=I/2End;(例2_08)(2)动态数组:type数组类型名=array of 基类型 或 数组类型名=array of array of 基类型typeb1:array of Integer; var b:b1;/4个字节 SetLength(b,100;)/4*100字节b2:array of array of single;/4个字节(指针)var bb2:b2;SetLength(bb2,8,10);SetLength(bb23,8);SetLength(bb28,1);例如:var dyarray:array of real;BeginSetLength(dyarray,20);/分配空间End;注意:动态数组的下标总是从0开始。动态数组变量是指向数组的指针,因此可以使用如下语句:dyarray:=NIL;(例2_09)2.record不同类型数据的组合体。不同类型的元素称为“域”,在声明一个记录类型时,需指定域的类型及名称。声明语法为:type recordTypeName=recordfieldList1:type1;fieldListn:typen;end;例如:type TStudRec=recoed stu_no:Integer; stu_name:string; stu_credit:Integer;end;var ZhangMing,WangHua:TStudRec;begin ZhangMing.stu_no:=55; ZhangMing.stu_name:=ZhangMing;end.3.setset of 基类型(必须是有序类型,一个集合最多只能包含256个元素,且元素的序数范围只能为0到255)。见教材P15如:type Tint=0.255;T1=set of Tint;Tchar=set of (a,b,c);集合的运算中有一种运算为给集合增减元素:其运算符为+、-或Include、Exclude过程include(T1,256);/增加元素charset=charset+d;Exclud

温馨提示

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

评论

0/150

提交评论