Delphi基础知识.docx
- 文档编号:13254231
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:14
- 大小:127.97KB
Delphi基础知识.docx
《Delphi基础知识.docx》由会员分享,可在线阅读,更多相关《Delphi基础知识.docx(14页珍藏版)》请在冰点文库上搜索。
Delphi基础知识
Delphi基础知识
Delphi是著名的Borland公司开发的可视化软件开发环境,自1995年问世以来,带来了程序设计中的一场重大变化。
Delphi作为第四代编程语言,具有简单、高效和功能强大等特点,这些特点使得它为广大程序开发者所青睐。
1.1Delphi简介
Delphi作为一种可视化的编程环境,提供了方便、快捷的Windows应用程序开发工具。
Delphi使用了MicrosoftWindows图形用户界面的许多先进特性和设计思想,采用了可重复利用的完整的面向对象的程序语言(Object-OrientedLanguage)、是当今最快的编辑器、拥有领先的数据库技术。
对于广大的程序开发人员而言,使用Delphi开发应用软件,无疑会大大提高编程效率。
Delphi到今天已经历了7代产品的发展历程,每一代产品都是伴随Windows操作平台的升级而升级。
Borland公司从1983年推出TurboPascal1.0开始,一直推动着Pascal向前发展,其间走过了艰苦创作的历程,最终完成了从DOS到Windows的质的飞跃。
进入Windows时代后,Borland公司在1995年推出了基于Windows平台的Delphi1,成为Windows开发工具的新突破。
Delphi1的出现,首次为使用Pascal语言的程序开发者提供了一个可视化开发环境。
其后,Borland公司以每年一个版本的速度对Delphi进行扩充功能和提高性能。
Delphi2新增加的主要功能是对32位编程的支持。
除此之外,Delphi2还增加了如数据模块等多种高效的数据重用功能。
随后出现的Delphi3,不仅改进了集成开发环境(IDE)和“代码洞察”,还对其组件库进行了许多增强,并且完全支持ActiveX组件及其创建,大大巩固了Delphi作为Windows应用程序开发工具的地位。
对于Delphi4,它提供了ObjectPascal语言的扩展,使之更像C++。
同时,Delphi4还改进了“工程管理器”、“模块资源管理器”的功能。
遗憾的是Delphi4并不是一个很成功的版本,由于瑕疵较多,系统稳定性较差,其应用并不十分广泛。
1999年推出的Delphi5不仅继承了低版本Delphi的诸多优点,克服了Delphi4中存在的缺陷,而且增加了许多新的功能,对开发环境也做了改进和完善,使程序的编写更简单。
Delphi5增强了数据库的功能,为基于客户/服务器体系结构的二层应用程序提供了一套完整的解决方案,使本来极为复杂的COM、ActiveX、Web应用程序开发、多层数据库系统体系结构等技术变得非常容易使用。
2001年6月推出的Delphi6又在Delphi5的基础上增加了许多新的功能,对开发环境也做了改进和完善,特别是增加了大量的新组件,使组件数目达350多个,以满足网络开发的需要。
Delphi7是Borland公司于2002年8月推出的Delphi的最新版本。
和Delphi6以及以前的版本相比,Delphi7在集成开发环境IDE、Web、数据库、编译器、模型生成支持及组件库等很多方面进行了改进,使之更适应开发的要求。
1.2Delphi7IDE
集成开发环境(integratedevelopmentenvironment,以下简称IDE)是指通过单一的控制面板访问所有的开发工具:
编辑器、调试器、对象管理器、编译器、实时分析器、图形信号分析器等。
当前流行的开发工具,比如Delphi、VisualC++、VisualBasic、C++Builder和PowerBuilder等都给程序员提供了集成式开发环境,极大地提高了程序员的开发效率,缩短了程序的开发时间。
在本节中介绍一下Delphi7中的IDE。
1.2.1认识集成开发环境
Delphi7的IDE(如图1-1所示)主要包括7个部分:
主窗口、组件面板、工具栏、
图1-1Delphi7的IDE
窗体设计器、代码编辑器、对象观察器(objectinspector)和代码浏览器。
使用IDE,软件开发人员可以很方便地完成创建、调试、修改应用程序等各种操作。
下面将分别对它们予以介绍。
1.主窗口
主窗口(如图1-2所示)可以认为是DelphiIDE的控制核心。
它具有其他Windows应用程序的主窗口所具有的一切功能。
主窗口主要包括4部分:
菜单栏、工具栏、标题栏和组件面板。
图1-2Delphi7的主窗口
(1)菜单栏
与其他Windows应用程序一样,可以通过菜单栏创建、打开或保存文件、调用向导、查看其他窗口、修改选项等。
主菜单的每一项都可以通过工具栏上的一个按钮来实现。
(2)工具栏
工具栏(如图1-3所示)上的每个按钮都实现了IDE的某项功能,诸如打开文件或创建项目等。
注意工具栏上的按钮都提供了描述该按钮功能的tooltip。
除了组件面板,IDE有6个独立的工具栏:
Debug、Desktops、Standard、View、Internet和Custom。
图1-3显示了这些工具栏上默认的按钮配置。
在一个工具栏上右击,再在弹出的菜单中选择Customize(定制)命令,就可以增加或去掉一些按钮。
图1-3Delphi7的工具栏
IDE工具栏的定制功能并不仅限于配置需要显示的按钮,还可以调整工具栏、组件面板和菜单栏在主窗口中的位置。
要做到这一点,只需拖动工具栏右部凸起的灰色条即可。
当拖动时,如果鼠标落在了全窗口区域的外部,就会看到另一种定制形式:
工具栏可以在主窗口内浮动,也可以停靠在它们自己的工具窗口内。
(3)组件面板
组件面板(如图1-4所示)是一个双层工具栏,它包含了IDE中安装的所有的VCL组件和Active组件。
各选项页和组件在面板中的顺序和外观可以通过右击它或从主菜单中选择Component→ConfigurePalette命令进行调整。
图1-4Delphi7的组件面板
2.窗体设计器
在创建新的项目时,窗体设计器是一个空白的窗口。
可以把窗体设计器看作是艺术家的画布,在这块画布上可以描绘出各种各样的Windows应用程序。
应用程序的用户界面正是由窗体实现的。
只要从组件面板上选择一个组件并把它放到你的窗体上,就能够实现与窗体设计器的交互。
可以用鼠标调整组件在窗体设计器上的位置和大小,还可以用对象观察器和代码编辑器来控制组件的外观和行为。
3.对象观察器
利用对象观察器,可以修改窗体或组件的属性,或者使它们能够响应不同的事件。
属性(Property)是一些数据,如高度、颜色、字体等,它们决定了组件在屏幕上的外观。
事件(Event)则是一种消息处理机制,它能够捕捉某种情况的发生并做出反应,像鼠标单击和窗口打开就是两种典型的事件。
对象观察器类似于一个带标签的多页笔记本,包括Properties选项卡和Events选项卡,切换时只需在窗口上部单击所需选项卡的标签即可。
至于对象观察器中显示哪个组件的属性和事件,取决于在窗体设计器中当前选择的是哪个组件。
Delphi7还可以按对象的种类或名字的字母顺序来排列对象观察器的内容。
要做到这一点,只需在对象观察器中右击任何二处并从快捷菜单中选择Arrange命令即可。
图1-5中并列显示了两个对象观察器,左边一个按种类排序,右边一个按名字排序。
还可以从快捷菜单中选择View来指定想看到的对象种类。
图1-5按种类或名称查看ObjectInspector
Delphi程序员必须知道的、也是最实用的一点就是:
帮助系统是和对象观察器紧密结合在一起的,如果你想了解某个属性或事件的帮助信息,只要在该属性或事件上按下F1键,就可获取相应的帮助。
4.代码编辑器
代码编辑器是输入代码来指定应用程序行为的地方,也是Delphi根据应用程序中的组件自动生成代码的地方。
代码编辑器类似于一个多页的笔记本,每一页对应着一个源代码模块或文件。
当向应用程序中加入一个窗体时,Delphi会自动创建一个新的单元,并添加到代码编辑器顶部的标签中。
当进行编辑的时候,快捷菜单提供了很多的选项,如关闭文件、设置书签等。
5.代码浏览器
代码浏览器以一种树状视图的方式显示了列在代码编辑器中的单元文件。
通过代码浏览器,可以方便地在单元文件中漫游或在单元文件中加入新的元素或者把已有的文件改名。
要记住代码浏览器和代码编辑器有一对一的关系。
在代码浏览器中右击一个节点即可以看到该节点的可用选项。
也可以通过修改主菜单Tools→EnvironmentOptions中的Explorer选项卡来控制代码浏览器的行为,如排序和过滤等。
6.源代码生成器
当对窗体设计器中的可视化组件进行操作时,DelphiIDE会自动生成ObjectPascal源代码。
最简单的例子就是,当用File→New→Application菜单命令创建一个新的项目时,将看到屏幕上出现一个空白的窗体设计器,同时,代码编辑器中会自动出现一些代码,如下所示:
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs;
type
TForm1=class(TForm)
ProcedureFormCreate:
(Sender;Tobjeet);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
var
Form1:
TForm1;
implementation
{$R*.dfm}
end.
应该注意到和任何窗体对应的源代码模块都驻留在单元文件中。
虽然每个窗体都对应着一个单元文件,但并不是每个单元文件都对应着一个窗体。
如果对Pascal语言不太熟悉、不清楚单元的概念,请参考相关的参考书。
在上述源代码清单中,有这么几行代码:
type
TForml=class(TForm)
ProcedureFormCreate(Sender:
Tobject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
可以看出,窗体对象是从TForm继承下来的。
Delphi已经清楚地标出了可以插入公共(Pubic)和私有(Private)变量的地方。
下面这一行非常重要:
{$R*.dfm}
Pascal语言中的$R指令用于加载一个外部资源文件。
上面这一行表示把*.dfm(代表Delphi窗体)文件链接到可执行文件中。
*.dfm文件中包含了在窗体设计器中创建的表单的二进制代码。
其中的“*”不代表通配符,而是表示与当前单元文件同名的文件。
例如假设上面一行是在一个名为Unitl.pas的文件中,则*.dfm就代表名为Unitl.dfm的文件。
应用程序的项目文件也值得注意。
项目文件的扩展名是.dpr(代表DelphiProject),它只是一个带有不同扩展名的Pascal源文件。
项目文件中有程序的主要部分,与其他版本的Pascal不同,大多数的编程工作都是在单元文件中完成的,而不是在主模块中。
可以选择主菜单下的Project→ViewSource命令把项目源文件调入代码编辑器。
下面是一个应用程序示例的项目文件:
programProject1;
uses
Forms,
Unit1in'Unit1.pas'{Form1};
{$R*.res}
begin
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.Run;
End.
当向应用程序中添加表单和单元的时候,它们将出现在项目文件的uses子句中。
这里也要注意,在uses子句中的单元文件名之后,相应表单的名字将以注释的形式出现。
如果搞不清楚哪个单元对应哪个文件,可以选择View→ProjectManager来打开ProjectManager(项目管理器)窗口。
注意每个表单都对应着一个单元文件,而有的单元文件却只有代码而不对应任何表单。
在Delphi中,大部分情况下都是对单元文件进行编程,而几乎不需要编辑.dpr文件。
1.2.2基于组件的编程思想
Delphi7是一种典型的基于组件的编程工具。
在介绍组件编程之前,首先简要地回顾一下软件设计方法的发展史,以便更好地理解基于组件的编程思想。
在早期DOS操作系统和C语言主导的时代,“数据结构+算法”成为构建软件的惟一方式,然而这种扁平的API组织结构带来的现实逻辑与机器实现之间的巨大鸿沟让人无法忍受,近乎相同的软件被低效地一遍一遍重写。
接着,千呼万唤始出来的C++语言和面向对象技术,一时间成为我们的口头语;绚丽多彩的Windows成为我们的栖息地;MFC类库及由其主导开发的各种桌面软件成为C++历史上的极盛时期。
然而,随着软件规模越来越大,面向Web应用的需求越来越高,源代码级的对象复用显然已经不能满足我们的需要。
软件开发迫切需要一个面向Internet的异构体系,为软件提供像IC电路元件一样可插拔的标准封装和复用方式的组件构造平台。
于是20世纪90年代中期开始流行一种崭新的程序设计概念:
软件可以由可互换的组件构成,一套组件可以装配出音频系统或者家庭影院。
这就是基于组件的编程思想。
到底什么是组件?
不同的人可能会有不同的答案。
一般来讲,组件是指一种通过公开的属性、方法、事件,让其他的程序设计者可以重复使用的一种经过编译的二进制文件,其文件名可以是.OCX或者是.dll,如命令按钮、复选框、单选框、滚动条等都是常见的组件。
同一个组件可以嵌入各种不同的应用程序之中,因而可以方便地通过改写组件的属性和事件来定制组件,使它适用于不同的应用程序,从而极大地提高编程的效率和程序的复用率。
Delphi7中有一个庞大的可视化组件库(VCL),其中总共包括了一百多种组件,涉及程序设计的各个领域。
其中任何一种组件一般都包括属性、方法、事件等信息,你可以对其进行设定或者重载,“装配”自己的软件。
当然用户也可以定义自己的组件,具体将在第5章详细介绍。
1.2.3Delphi7的特点
目前的编程语言和编程工具可谓“春色满园,百花齐放”。
编程语言方面由以前的汇编、C、Pascal、Basic等基于过程的编程语言发展到C++、ObjectPascal、Java等面向对象的编程语言;编程工具也由以前的功能单一、界面呆板的TurboC等发展到具备集成开发环境、功能强大、界面友好的Delphi、VisualC++、VisualBasic、PowerBuilder、JBuilder等。
但是为什么面对如此多的选择,许多的程序员却对Delphi情有独钟呢?
Delphi具有哪些优势呢?
Delphi最显著的特点就是高效性和稳定性,主要体现在以下5个方面:
∙可视化开发环境的性能;
∙编译器的速度和已编译代码的效率;
∙编程语言的功能及其复杂性;
∙数据库结构的灵活性和可扩展性;
∙框架对设计和使用模式的扩充。
1.可视化开发环境
可视化开发环境通常可分为3个部分:
编辑器、调试窗口和窗体设计器。
与大多数的现代RAD(快速应用开发)工具一样,这三部分都是协同工作的。
当程序员在窗体设计器中工作时,Delphi7在后台自动为正在窗体中操纵的组件生成代码。
程序员还可以自己在编辑器中加入代码来定义应用程序的行为,同时还可以在同一编辑器中通过设置断点和监控点等来调试程序。
总的来说,Delphi7的编辑器和其他工具的编辑器类似,但它的CodeInsight技术却省去了许多输入工作的麻烦。
这一技术是建立在编译器信息之上的,而不是基于像VisualBasic等使用的类型库,因此应用范围更广泛。
在调试器方面,Delphi7不仅可与VisualStudio媲美,同时它还具备了许多先进的功能,如远程调试、过程关联、DLL和包调试、自动本地监控以及CPU窗口等。
Delphi7还支持在调试时随意放置和停靠窗口并把这一状态保存为命令的桌面设置。
由此可见,Delphi7的IDE(集成开发环境)实现了对调试功能的良好支持。
对RAD工具(Delphi、VisualC++、VisualBasic、C++Builder和PowerBuilder等)来说,窗体设计器是一项独特的功能。
一些更为经典的开发环境,都提供了对话编辑器,但却没有将窗体设计器集成到开发流程中。
由图3-6所示的效率图可以看出,没有窗体设计器将会降低开发工具的整体效率。
几年来,Delphi和VisualBasic在完善窗体设计器的功能方面展开了激烈的竞争。
它们的新版本功能一个比一个强。
Delphi窗体设计器与众不同之处在于,Delphi是建立在一个真正面向对象的框架结构基础之上的。
这样,你对基类所做的改变都将会传递给所有的派生类。
这里涉及的一项关键技术就是VFI(VisualFormInheritance),即可视化窗体继承。
VFI技术使你能够动态地继承当前项目或对象库中的任何其他窗体。
一旦基窗体发生改变,派生的窗体会立即予以更新。
2.编译器的速度和已编译代码的效率
快速的编译器可以使用户逐步递进地开发软件,形成经常修改源代码、重新编译、测试、再修改、再编译、再测试……这样一个良好的开发循环。
如果编译速度很慢,开发者就不得不分批地修改代码,每次编译前进行多处修改以适应一个低效率的循环过程。
提高运行效率、节约运行时间、生成的二进制代码更为短小,其优越性是不言而喻的。
也许Pascal编译器最著名的特点就是速度快,而Delphi正是建立在这种编译器的基础之上的。
事实上,它可能是针对Windows的最快的高级语言本地代码编译器。
以往速度很慢的C++编译器在近年来取得了很大的进步,增加了链接和各种缓存策略,尤其是在VisualC++和C++Builder中。
但即便如此,C++的编译器还是比Delphi慢了几倍。
编译速度一定能与运行效率成正比吗?
当然不是。
Delphi和C++Builder共享同一种编译器后端,因此生成的代码等效于由一个优秀的C++编译器生成的代码。
根据最新的可靠评估标准,VisualC++在许多场合都被认为在编译速度和生成代码长度方面是最有效的,这得益于一些极为有力的优化措施。
虽然对通常的应用程序开发来说,这些细小的优越性难以被注意到,但如果你正在编写复杂的计算代码,那么它们就会发挥作用。
VisualBasic的编译技术有点特别。
在开发过程中,VisualBasic以一种集成的方式运作,而且反应相当敏锐。
这种编译器速度比较慢,生成的可执行代码的效率也远远不及Delphi和C++工具。
Java是另一种有趣的语言。
最新的基于Java的工具语言JBuilder和VisualJ++自称其编译速度能赶得上Delphi,但是生成代码的执行效率却不尽人意,因为Java是一种集成语言。
虽然Java在稳步地前进,但在大多数场合,其运行速度却仍与Delphi和C++相距甚远。
3.编程语言的功能及其复杂性
在旁观者的眼里,一种语言的功能和复杂程度是极为重要的,这也是许多人争论的热点。
对这个人来说简单的东西,对那个人来说可能很难;对这个人来说功能有限的东西,对另一个人来说却可能是非常完美的。
因此,以下几点仅源于作者个人的经验和体会。
从根本上来说,汇编是一种最有力的语言。
用它你几乎无所不能。
但是,即便是用汇编开发最简单的应用程序,难度也非常大,还可能一无所获。
不仅如此,要想在一个小组开发环境中保留一段汇编代码,不管保留多长时间,有时也是根本不可能的。
因为代码从一个人传给另一个人、再到下一个人,设计思想和意图越来越不明朗,直到代码看起来如同天书。
因此,我们对汇编的评价很低,它虽然功能很强大,但对几乎所有的开发者来说都太复杂了。
C++是另一种极为有力的语言。
在它的潜在功能(如预处理器宏、模板、操作符加载等)的帮助下,你几乎可以使用C++设计你自己的语言。
只要合理地使用其丰富的功能选项,就可以开发出简洁直观、易于维护的代码。
然而,问题是,许多开发者总滥用这些功能,这就很容易导致发生重大错误。
事实上,写出糟糕的C++代码反倒比写出好的C++代码更容易。
因为这种语言自己不会朝着好的设计方向前进——这由开发者决定。
ObjectPascal和Java给我们的感觉很相似,因为它们很好地把握住了复杂性和功能性的平衡。
它们都采取了这样一种途径,即限制其可用功能以加强开发者的逻辑设计。
例如,两者都避免了完全面向对象但却容易被滥用的多重继承的观念,而是实现了一个执行多重接口功能的类。
两者都不支持美观却危险的操作符加载。
两者都有一些强大的功能,诸如异常处理、运行期类型信息和生存期内存自管理字符串。
同时,两种语言都不是由专门的编委会写出来的,而是来自于单个组织中对这种语言有着共同理解的个人或小组。
1.2.4帮助的使用
作为一种性能优越的编程工具,Delphi7同样也提供了功能强大的帮助功能,你可以随时随地取得需要的帮助信息。
下面列举了使用帮助系统的一些小知识,供读者参考。
1.当遇到问题时,可以尝试按下F1键,Delphi会根据当前的焦点而启动相应的帮助,一般情况下Delphi都会准确地定位。
Delphi的联机帮助具有智能判断的功能。
如果当前位置在对象编辑器中的某个属性中时,按下F1键后则会自动显示该属性的帮助内容;如果当前显示的是Delphi系统的某个对话框,按下n键后则会显示该对话框的有关帮助内容;如果弹出了某个菜单,这时按下F1键,则会显示该菜单命令的有关帮助内容。
2.如果需要浏览系统的一些帮助内容,比如说对象Pascal语言,可以通过菜单Help→DelphiHelp命令打开“帮助主题:
DelphiHelp”对话框,在目录标签中展开相关的条目,进行系统地学习。
3.在使用Delphi编程的过程中,常常要使用到WindowsAPI函数,然而通过菜单Help→DelphiHelp命令打开的“帮助主题:
DelphiHelp”对话框中,在“索引”选项卡中可能查不到有关的帮助信息,比如WindowsAPI函数MessageBeep的有关帮助信息。
一种解决的办法就是在代码编辑器中输入WindowsAPI函数的名称,然后将光标定位到该名称中,接着按下F1键。
另一种办法就是可以通过菜单栏中的Help→WindowsSDK直接打开帮助文件Win32.hlp,在其中的“索引”选项卡中查找。
在使用一些WindowsAPI函数时,可能会出现一条错误信息,比如:
“[Error]Unitl.pas(31):
Undeclaredidentifier:
'OpenPrinter'”。
这表明应该将该API函数声明所在的单元包含在uses语句中。
至于是哪一个单元,可以按下该API函数的帮助内容中的QuickInfo按钮,查看ImportLibrary中指定的是哪个库文件。
4.在帮助文件打开的情况下,如果要浏览相关内容,可以按下工具栏中的>>按钮或<<按钮,通常这样是在同一个主题中进行浏览。
有些帮助文件中有TopicGroup,通过它可以新打开一个主题列表窗口,这样可以非常方便地浏览一个完整主题的帮助内容。
此外,通过一些SeeAlso热链接,也可以查看相关的帮助内容。
5.在组件栏上右击,通过快捷菜单的Help命令,可以查看有关组件的帮助内容。
6.在Delphi集成开发环境中,通过菜单栏中的Help→Customize命令可以打开一个O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Delphi 基础知识