ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:56.18KB ,
资源ID:29328062      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29328062.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(delphi学习.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

delphi学习.docx

1、delphi学习Delphi学习心得一、 IDE界面Delphi是Inprise公司推出的基于对象Pascal语言的可视化集成开发工具。利用Delphi编程,可以快速、高效地开发出基于Windows环境的各类程序,尤其在数据库和网络方面,Delphi更是一个十分理想的软件开发平台。最新版本:Delphi 2006 (10.0)商友3.x使用版本 Delphi 2.0商友4.5、5.2使用版本Delphi 6.01、 主窗口:(1)标题栏标题栏中显示了当前的工程名,标题栏位于最上部。(2)主菜单通过主菜单可以实现集成开发环境中的绝大部分命令,愿意的话可以逐个浏览、使用一下主菜单中所有的命令。其中

2、Delphi在主菜单栏中将“Component”(组件)和“Database” (数据库)作为独立的菜单项列出来,可以看出,利用Delphi进行程序开发,组件和数据库将是两个非常重要的方面。(3)工具栏工具栏上的每个按钮都实现了IDE的某项功能,诸如打开文件或创建项目等。(4)组件栏组件面板包含了IDE中安装的所有的VCL组件和ActiveX控件。各选项页和组件在面板中的顺序和外观可以通过右击它或从主菜单中选择Component | configure Palette进行调整。在利用Delphi开发应用程序的过程中,正确、合理、恰当地使用组件非常重要。2、 窗体设计器窗体设计器刚开始的时候是一

3、个空白的窗口。可以把窗体设计器看作是艺术家的画布,在这块画布上可以描绘出各种各样的Windows应用程序。应用程序的用户界面正是由窗体实现的。只要从组件面板上选择一个组件并把它放到你的窗体上,就能够实现与窗体设计器的交互。可以用鼠标调整组件在窗体设计器上的位置和大小,还可以用Object Inspector和代码编辑器来控制组件的外观和行为。3、 对象编辑器(Object Inspector)对象编辑器的功能是实现对象(尤其是组件)的属性设置,创建事件处理过程并进行管理。利用Object Inspector,可以修改窗体或组件的属性,或者使它们能够响应不同的事件。属性(property)是一些

4、数据,如高度、颜色、字体等,它们决定了组件在屏幕上的外观。事件(event)则是一种消息处理机制,它能够捕捉某种情况的发生并做出反应,像鼠标单击和窗口重画就是两种典型的事件。至于Object Inspector中显示哪个组件的属性和事件,取决于在窗体设计器中当前选择哪个组件。对象编辑器分为下面的三个部分:对象列表对象列表是一个组合框,包含了当前窗体上的所有组件。有时一些组件因为太小或没有明显的标志,利用鼠标点击不容易选中,这时可以利用对象列表组合框来选择该组件。属性页(Property)属性页中列举了当前被选中的对象(比如说组件)的属性。可以在程序设计的过程中直接对这些属性进行修改,也可以在程

5、序运行期间通过代码进行修改。在有些属性的前面有一个带有方框的加号标志,表明该属性是由一些子属性组成的。点击该加号标志就可以展开该属性,同时加号标志变成了一个带有方框的减号标志。事件页(Event)通常情况下,事件处理过程为空。可以双击事件右面的组合框来添加事件的处理过程。如果要共用已存在的事件处理过程,可通过下拉式组合框进行选择。4、 代码编辑器(Code Editor)和代码浏览器(Code Explorer)代码编辑器是输入代码来指定应用程序行为的地方,也是Delphi根据应用程序中的组件自动生成代码的地方。代码编辑器类似于一个多页的笔记本,每一页对应着一个源代码模块或文件。当向应用程序中

6、加入一个窗体时,Delphi会自动创建一个新的单元,并添加到代码编辑器顶部的标签中。代码编辑器为代码的输入和编辑提供了一个方便的环境。代码识别技术通过代码浏览器可以在代码编辑器中快速地定位,并可以在其中将定义的类完善。5、 信息窗口(Message View)信息窗口在代码浏览器窗口和代码编辑器窗口的下部,在编译和链接过程中出现的一些信息将显示在信息窗口中。如果双击信息窗口中的信息条目,当前位置将定位到代码编辑器中导致问题的代码处。6、 集成调试器当程序编译、链接通过以后就可以运行,只是在一些地方与当初的预想不同。此时,可以利用集成调试器来解决问题,找出可能存在逻辑错误的地方。通常,可以在可能

7、存在问题的代码处设置一些“断点”,程序执行到断点处就自动暂停,并转到代码编辑器中设置了断点的代码处。此时,可以通过“单步执行”将语句一条一条地执行下去。在执行的过程中,同时可以查看一些变量的数值,也可以查看堆栈、CPU、汇编代码和当前运行的线程等情况,然后找出代码错误的地方并加以改正。1 设置/去除断点断点的设置可以在程序调试前进行,也可以在程序调试期间进行。设置/去除断点最简单的方法是在代码编辑器中,按F5键或利用鼠标点击代码行左边的灰色竖条处。2 单步执行当程序运行到断点处暂停后,可以按F8键或通过菜单命令Run | Step Over单步执行下去。如果遇到过程或函数调用,程序将一次执行完

8、成。按下F7键或选择菜单命令Run | Trace Into,可以在遇到过程或函数调用的时候,进入过程或函数的内部。3 查看信息在调试过程中,如果想查看某个变量的数值,可以在程序暂停的情况下,在代码编辑器中将鼠标移动到这个变量上稍停一下,就会出现一个小窗口显示该变量的数值。通过菜单命令Run | Add Watch也可以对变量的数值进行查看,同时还会出现一个Watch List对话框。在程序单步执行的情况下,在代码编辑器中单击鼠标右键,选中弹出菜单的Debug | View CPU命令,将弹出CPU对话框显示当前CPU的有关情况。此外,在程序单步执行时,通过菜单命令View | Debug W

9、indows | Threads可以弹出Thread Status对话框,对当前运行的线程进行查看。4 中止运行在程序调试期间,可能会由于代码的问题,程序在运行时停在了某个地方而不继续下去。这时可以按Ctrl+F2键或通过菜单命令Run | Program Reset来终止程序的运行。二、 基本语法Delphi中使用的面向对象pascal编程语言并不是borland公司1995年发布可视化开发环境Delphi时才有的,它只是已有borland pascal产品的简单扩展。 Borland没有发明pascal,但它推广并扩展了pascal。1、 注释 在Pascal中,注释括在大括号中或带星号的

10、圆括号中。Delphi 也认可C+ 风格的注释,即把注释放在双斜线后。例如 this is a comment (* this is another comment *)/ this is a comment up to the end of the line此外,编译器不编译代码中的空格、空行和Tab键空格,这些元素通称为空白,它们只用来提高代码的可读性,不影响编译过程。在注释行前留一行空白,或把长的代码句分成较小的部分,这样能提高代码的可读性。使用大写字母Pascal 编译器(不象其他语言的编译器)不考虑字符的大小写,因此标识符Myname、MyName、myname、myName、 和M

11、YNAME是完全相同的。总体上来说,这是Pascal的一大优点,因为在大小写敏感的语言中,许多语法错误是由不正确的大写引起的。不过Pascal语言的大小写不敏感特性有一个例外:控件包中的Register 过程必须以大写字母R开始,因为需要与C+ Builder 兼容。然而大小写不敏感也有不便之处:第一,你必须注意大小写不一致的标识符实际上是相同的,以避免把他们当成不同的元素使用;第二,你必须尽量保持大写使用的一致性,以提高代码的可读性。2、 变量Pascal 变量在使用前必须声明,声明变量时必须指定一种数据类型。下面是变量声明的例子:var Value: Integer; IsCorrect:

12、 Boolean; A, B: Char;关键字var可以在许多地方使用,例如放在函数或过程的开始部分,用来声明函数或过程的局部变量;也可以放在单元中,用于声明全程变量。var关键字之后是一组变量名列表,每个变量名后跟一个冒号和数据类型名,一行中可以声明多个变量,如上例中最后一句。一旦变量的类型被指定,你只能对变量执行该变量类型支持的操作。例如,在判断操作中用布尔值,在数字表达式中用整型值,你不能将布尔值和整型值混用(在C语言中可以这样)。使用简单的赋值语句,可写出下面的代码:Value := 10;IsCorrect := True;但下面的语句是不正确的,因为两个变量数据类型不同:Valu

13、e := IsCorrect; / error在Delphi中编译这句代码,会出现错误信息:Incompatible types: Integer and Boolean.(类型不兼容:整型和布尔型)。象这样的错误通常是编程错误,因为把一个 True 或 False 的值赋给一个整型变量没有什么意义。你不该责怪Delphi 提示这样的错误信息,代码中有不对的地方Delphi当然要提出警告。把变量的值从一种类型转换到另一种类型往往不难做到,有些情况下类型转换会自动实现,不过一般情况下需要调用特殊的系统函数,通过改变数据内部表示来实现类型转换。在Delphi 中,当你声明全程变量时,你可以赋给它一

14、个初值。例如,你可以这样写:var Value: Integer = 10; Correct: Boolean = True;这种初始化方法只能用于全程变量,不能用于过程或方法的变量。3、 常量对于在程序运行期间保持不变的值,Pascal 允许通过常量来声明。声明常量不必特定数据类型,但需要赋一个初值。编译器会根据所赋初值自动选用合适的数据类型。例如:const Thousand = 1000; Pi = 3.14; AuthorName = Marco Cant;Delphi 根据常量的值来决定它的数据类型。上例中的Thousand 变量,Delphi会选用SmallInt数据类型 (短整型

15、-能容纳Thousand变量的最小整数类型)。如果你想告诉Delphi 采用特定的类型,你可在声明中加入类型名,方法如下:const Thousand: Integer = 1000;对于声名的常量,编译器有两种编译选择:第一种为常量分配内存,并把常量的值放入内存;第二种在常量每次使用时复制常量值。第二种方法比较适合简单常量。资源串常量当定义字符串常量时,你可这样写:const AuthorName = Marco Cant;从Delphi 3 开始,你可以用另一种方式写:resourcestring AuthorName = Marco Cant;上面两个语句都定义了一个常量,也就是定义了一

16、个在程序运行期间保持不变的值,但两者的实现过程却不同,用resourcestring 指令定义的字符串变量将被保存到程序资源的字符串表中。从例子ResStr你可了解资源串的实际作用,例子中设置了一个按钮, 相应代码如下:resourcestring AuthorName = Marco Cant; BookName = Essential Pascal;procedure TForm1.Button1Click(Sender: TObject);begin ShowMessage (BookName + #13 + AuthorName);end;以上代码中的两个字符串将分两行输出显示,因为字

17、符串被分行符 #13 隔开。有趣的是,当你用资源编辑器打开执行文件时,你会在程序资源中看到你所定义的字符串。这意味着字符串并没有进入编译代码,而是保存在执行文件 (EXE文件) 的一个单独区域。注意:简而言之,采用资源的好处一方面可让Windows 来完成有效的内存处理,另一方面不用更改源代码就可实现程序的本地化 (把字符串翻译成不同的语言)。4、 数据类型ascal 中有多种预定义的数据类型,它们可分为三大类:有序数据类型,实数类型和字符串类型。有序类型有序数据类型是建立在概念“顺序”或“序列”基础上的数据类型。你不仅可比较两个有序值的大小,而且可以求取给定有序值的前驱及后继,或者计算它们的

18、最大或最小值。三种最重要的预定义有序类型是整数类型、布尔类型和字符类型(Integer, Boolean, Char)。各种类型根据其内部表示和取值范围不同又可进一步细分。实数类型实数类型代表不同格式的浮点数。Single类型占的字节数最小,为4个字节;其次是Double 浮点类型,占8个字节;Extended 浮点类型,占10个字节。这些不同精度的浮点数据类型都与IEEE( 电气和电子工程师协会)标准的浮点数表示法一致,并且 CPU数字协处理器直接支持这些类型,处理速度也最快。注意:Delphi 带有一个Math 单元,其中定义了一些高级数学例程,这些例程包括三角函数(如ArcCosh 函数

19、)、金融函数(如InterestPayment 函数)和统计函数(如MeanAndStdDev 过程)。有些例程,它的名字听起来很怪,如MomentSkewKurtosis 例程,它是作什么用的呢? 还是留你自己查吧。Delphi 也用实型数表示日期和时间数据。但为了更准确起见,Delphi 特别定义了TDateTime 数据类型,这是一个浮点类型,因为这个类型必须足够宽,使变量能容纳年、月、日、时、分和秒、甚至毫秒。日期值按天计数,从1899-12-30开始,放在TDateTime 类型的整数部分;时间值则位于十进制数的小数部分。字符串类型在Borland公司的Turbo Pascal和16

20、位Delphi中,传统的字符串类型是一个字符序列,序列的头部是一个长度字节,指示当前字符串的长度。由于只用一个字节来表示字符串的长度,所以字符串不能超过255个字符。这一长度限制为字符串操作带来不便,因为每个字符串必须定长(确省最大值为255),当然你也可以声明更短的字符串以节约存储空间。字符串类型与数组类型相似。实际上一个字符串差不多就是一个字符类型的数组,因为用符号,你就能访问字符串中的字符,这一事实充分说明了上述观点。为克服传统Pascal 字符串的局限性,32位Delphi增加了对长字符串的支持。这样共有三种字符串类型:ShortString 短字符串类型也就是前面所述的传统 Pasc

21、al 字符串类型。这类字符串最多只能有255个字符,与16位Delphi中的字符串相同。短字符串中的每个字符都属于ANSIChar 类型(标准字符类型)。 ANSIString长字符串类型就是新增的可变长字符串类型。这类字符串的内存动态分配,引用计数,并使用了更新前拷贝(copy-on-write)技术。这类字符串长度没有限制(可以存储多达20亿个字符!),其字符类型也是ANSIChar 类型。 WideString 长字符串类型与ANSIString 类型相似,只是它基于WideChar 字符类型,WideChar 字符为双字节Unicode 字符。用户自定义数据类型Pascal 语言的一个

22、重要特征是它能自定义数据类型。通过各种类型构造器,你可以定义自己的数据类型,如子界类型、数组类型、记录类型、枚举类型、指针类型和集合类型。最重要的用户定义数据类型是类(class),类是Object Pascal的面向对象扩展部分,本书不讨论这部分。命名及不命名的类型为了后续使用或直接用于变量,需要给自定义类型命名。如果自定义一个命名的类型,你必须将代码放在特定的type区,如下所示:type / subrange definition Uppercase = A.Z; / array definition Temperatures = array 1.24 of Integer; / rec

23、ord definition Date = record Month: Byte; Day: Byte; Year: Integer; end; / enumerated type definition Colors = (Red, Yellow, Green, Cyan, Blue, Violet); / set definition Letters = set of Char;你也可使用类型定义构造器直接定义一个变量,此时无需显式命名,如下面的代码:var DecemberTemperature: array 1.31 of Byte; ColorCode: array Red.Viole

24、t of Word; Palette: set of Colors;注意:一般来说,你应该避免使用上述不命名类型,因为你不能把它们作为参数传给例程,也不能用于声名同一类型的其他变量。实际上,Pascal的类型兼容规则是基于类型名的,而不是基于实际的类型定义。两个类型相同的变量仍有可能是不兼容的,除非他们的类型有完全相同的名字。对于不命名类型,需要编译器给它分配一个内部名字,因此对于数据结构复杂的变量,要习惯于定义命名数据类型,你一定不会为此白费工夫的。5、 语句简单语句和复合语句Pascal 简单语句中不包含任何别的语句,赋值语句和过程调用即是简单语句的例子。简单语句用分号隔开,如下所示:X

25、:= Y + Z; / assignmentRandomize; / procedure call用begin 和end 将简单语句括起来即组成复合语句,复合语句用法与普通的Pascal 语句相同,见下例:begin A := B; C := A * 2;end;end之前的最后一条语句末尾分号不是必需的。赋值语句在Pascal 语言中赋值语句用冒号-等号操作符“:=”,对使用其他语言的编程人员来说这是一个奇怪的符号。在其他语言中用作赋值符号的“=”在Pascal 中用作关系运算符,用于判断是否相等。条件语句条件语句通过条件检测,判断是否执行该条件语句中包含的语句。条件语句可有两种基本形式:i

26、f语句和case语句。If语句对if-then型语句,仅当条件满足时,语句才执行;对if-then-else型,if语句在两条语句中选择一条执行。条件用布尔表达式建立。Case语句如果你的if语句变得非常复杂,有时可以用case语句代替它。case语句包括用来选值的表达式、可能值序列或一个取值范围。这些值应该是常量,并且它们必须唯一,而且应属于有序类型。Case语句最后可以带一个else 语句,当没有一个标签与选择器的值一致时,执行else语句。case Number of 1: Text := One; 2: Text := Two; 3: Text := Three;end;Pascal语

27、言中的循环其它编程语言中使用的循环语句,Pascal语言中都有,它们包括 for、 while 和 repeat 语句。如果你用过其他编程语言,你会发现Pascal中的循环语句没什么特别的。For循环Pascal 中的for循环严格地建立在计数器基础上,循环每执行一次,计数器不是增加一个值就是减小一个值。下面是一个for语句的简例,用来将前十个数加起来:var K, I: Integer;begin K := 0; for I := 1 to 10 do K := K + I;同样的for语句可以用正好相反的计数器来写:var K, I: Integer;begin K := 0; for I

28、 := 10 downto 1 do K := K + I;Pascal 中的for循环语句其灵活性比其他语言小(它不能指定1之外的步长),不过简单也容易理解。如果需判断的条件比较复杂,或想自定义计数器,你可以用while语句或 repeat 语句,而不是for循环语句。注意:for循环计数器不必非是数字,它可以是任何有序类型的值,例如一个字符或一个枚举类型值。while语句和repeat语句while-do 循环语句和 repeat-until 语句的不同点在于repeat 循环语句的代码至少要执行一次。从下面的简例很容易理解这一点:while (I = 100) and (J 100) o

29、r (J 100);从上可见即使 I 或 J 的初始值大于100,repeat-until循环中的代码也仍会执行一次。注意:两种循环另一个关键的不同点是,repeat-until 循环的条件是反向的条件,只要不满足这个条件,循环就执行;当条件满足时,循环终止。这正好与while-do 循环相反,while-do 循环当条件是真值时才执行。为此,我不得不在上面代码中用反向条件来获得相同的结果。With语句我要讲的最后一种Pascal 语句是With语句,With语句是Pascal编程语言独有的语句,不过最近JavaScript 和Visual Basic也添加了这种语句,它在Delphi程序设计

30、中很有用。With语句是一种用于简化代码的语句。如你要访问一个记录类型变量(或一个对象),用With语句就不必每次重复变量的名字。例如对于以下的记录类型代码:type Date = record Year: Integer; Month: Byte; Day: Byte; end;var BirthDay: Date;begin BirthDay.Year := 1997; BirthDay.Month := 2; BirthDay.Day := 14;可以用with语句改进后半部分代码,如下:begin with BirthDay do begin Year := 1995; Month :

31、= 2; Day := 14; end;6、 过程与函数Pascal中的例程有两种形式:过程和函数。理论上说,过程是你要求计算机执行的操作,函数是能返回值的计算。两者突出的不同点在于:函数能返回计算结果,即有一个返回值,而过程没有。两种类型的例程都可以带多个给定类型的参数。不过实际上函数和过程差别不大,缺省参数Delphi 4 中添加了一个新功能,即允许你给函数的参数设定缺省值,这样调用函数时该参数可以加上,也可以省略。下例把应用程序全程对象的MessageBox 方法重新包装了一下,用PChar 替代字符串,并设定两个缺省值:procedure MessBox (Msg: string; Ca

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1