Delphi程序开发特点分析

  1.引言

  我们经常会问这样的问题“:到底什么使得Delphi如此优秀?”和“为什么和别的编程工具相比,我更愿意选择Delphi?”等等。简而言之就是:高效性。决定一个软件开发工具效率的因素归结为以下五点:①可视化开发环境的性能。②编译器的速度和已编译代码的效率。③编程语言的功能及其复杂性。④数据库结构的灵活性和可扩展性。⑤框架对设计和使用模式的扩充。

  2.Del phi的特点

  2.1可视化集成开发环境

  可视化开发环境通常分为三个组成部分:编辑器、调试器和窗体设计器。和大多数现代RAD(快速应用开发)工具一样,这三部分是协同工作的。当你在窗体设计器中工作时,Delphi在后台自动为你正在窗体中操纵的控件生成代码。你还可以自己在编辑器中加入代码来定义应用程序的行为,同时还可以在同一个编辑器中通过设置断点和监控点等来调试程序。

  在版本5里,Delphi的调试器具备了许多先进的功能,如远程调试、过程关联、DL断口包调试、自动本地监控以及CPU窗口等。Delphi还支持在调试时随意放置和停靠窗口并把这一状态保存为命令的桌面设置。由此,Delphi的IDE实现了对调试功能的良好支持。对RAD工具(如Delphi、Visual Basic、C++Builder和PowerBuilder等)来说,窗体设计器是一项独特的功能。一些更为经典的开发环境,如VC++和BC++,都提供了对话编辑器,但却没有将窗体设计器集成到开发流程中,没有窗体设计器将会降低开发工具的整体效率。几年来,Delphi与Visual Basic在完善窗体设计器的功能方面展开了激烈的竞争。Delphi的窗体设计器的与众不同之处在于,Delphi是建立在一个真正面向对象的框架结构基础之上的。这样,你对基类所做的改变都将会传递给所有的派生类。这里涉及的一项关键技术就是VFI(visual form inheritance),即可视化窗体继承。VFI技术使你能够动态地继承当前项目或对象库中的任何其他窗体。一旦基窗体发生改变,派生的窗体会立即予以更新。

  2.2编译器的速度和已编译代码的效率

  Pascal编译器最著名的特点就是速度快,而Delphi正是建立在这种编译器的基础之上的。事实上,它可能是针对windows的最快的高级语言本地代码编译器。以往速度很慢的C++编译器在近年来取得了很大的进步,增加了链接和各种缓存策略,尤其是在VISua1C++和C++Builder中。但即便如此,C++的编译器还是比Delphi的慢了几倍。Delphi和C++Builder共享同一种编译器后端,是一个公司的产品,因此生成的代码等效于由一个优秀的C++编译器生成的代码。

  2.3编程语言的功能及其复杂性

  C++是非强类型语言,有些错误编译器无法发现。Object Pascal和Java很相似,它们很好地把握住了复杂性和功能性的平衡。它们都采取了这样一种途径,即限制其可用功能以加强开发者的逻辑设计。例如,两者都避免了完全面向对象但却容易被滥用的多重继承的观念,而是实现了一个执行多重接口功能的类。两者都不支持美观却危险的操作符加载。两者都有一些强大的功能,诸如异常处理、运行期类型信息(RTT工)和生存期内存自管理字符串。特别是运行期类型信息(RTTI),对我们设计仿真培训系统中的操作站与现场站很重要,用它我们可根据组态数据库的数据在运行期自动创建组件和自动识别组件而赋给相应的数据。同时,Delphi使用编程语言是Object Pascal,是面对对象、强类型语言。有利编制稳健的应用程序,减少调试、检错时间以提高开发效率;有利描述真实世界的事物和系统,如控制系统、工艺数学模型。

  2.4数据库结构的灵活性和可扩展性

  由于Borland缺少一种数据库计划,因此Delphi保留了我们认为是所有工具中最灵活的数据库结构。对大多数基于本地、客户服务器和ODBC数据库平台的应用程序来说,BDE的功能都非常强大。如果你对此不满意,可以避开使用BDE以支持新的本地ADO组件。如果你没有装ADO,可以自己创建数据访问类或者购买第三方数据访问解决方案。此外,MIDAS使对数据源的多层访问更易于实现。而Microsoft的工具(ODBC、OLEDB或者其他)从逻辑上来说趋向于支持Mi-crosoft自己的数据库和数据访问解决方案。

  2.5框架对设计和使用模式的扩充

  这是一项经常被其他软件设计工具忽略了的重要功能。VCL是Delphi最重要的组成部分。在设计时操纵组件、创建组件、使用面向对象技术继承其他组件的行为,这些能力都是决定Delphi效率的关键因素。在许多场合,编写VCL组件都采用固定的00设计方法。相比之下,其它基于组件的框架经常过于死板或过于复杂。比如ActiveX控件具有和VCL控件相同的设计期性能,但却不能被继承以创建一个具有其他不同行为的新类。传统的类框架,如OWL和MFC,需要你有大量的内部结构知识,而且如果没有RAD工具的设计期支持,其功能将会受到抑制。

  3.Del phi的事件驱动机制

  3.1无约定编程

  与传统的Windows消息机制相比,Delphi的事件处理机制的最大优势在于所有的事件都是无约定的。对程序员而言,无约定就是指可以在事件处理程序中什么都不干。而在传统的Windows消息机制中,就不得不调用基类的消息处理程序,还要把信息回传给Windows。当然,Delphi的事件处理机制的无约定的编程方式可能无法对消息进行直接的灵活有效的处理,你要受制于谁引发了这一事件以及应用程序对这一事件要做出什么响应等。例如,可以在OnKeyPress处理程序中修改和取消击键,但onResize事件处理程序却只能提供这一事件已发生的通知而无法进一步防止或控制尺寸的改变。

  不过,Delphi仍然允许在事件处理程序中直接处理Windows消息。只是这就不像事件处理机制那么简单,因为消息处理需要程序员对要处理的消息有详细了解。可以通过message这个关键字处理所有Windows消息。使用Delphi开发应用程序的好处是,你既可以用高级的、易于理解的方式来编程,也可以在需要时直接访问低层的信息。

  3.2 Delphi的VCL消息系统

  所有的Delphi类有一个处理消息的内置机理,称之为消息处理方法或者Message handlers。Message handlers的基本思想就是:类获取一些种类的消息,然后再分发(dis-patch)它们,由响应的处理函数或者过程进行处理(调用哪一个处理函数或过程取决于所接受的消息)。对于一个特殊的消息,如果没有一个指定的方法存在的话,则由一个缺省的消息处理。

  VCL定义了消息分发系统,该系统将所有的windows消息(包括用户定义的消息)传递给相应的对象,由各对象的消息分发系统进行处理。VCL对象用于接收消息的方法叫做MainWndProc()。通过MainWndProc()可以对消息进行任何特殊的处理。不过,一般情况下很少直接调用MainWndProc()来处理消息,除非不想让消息通过VCL的消息系统分发。从MainWndProc()返回后,消息被传递给对象的WndProc()方法,这就是该对象的窗体过程,然后进入VCL的分发机构。分发机构使用Dispatch()方法把消息分发给一个消息句柄。消息到达该消息的处理句柄(Handler)后,经过该句柄的处理,这个消息处理过程就结束了。没有必要改变这个消息分发机理,所要做的只是产生一个消息处理方法或者句柄,即一个消息处理函数。

  3.3加速原型化

  当对Delphi使用了一段时间后,即使你只是一个Delphi新手,你也会发现,用Delphi编写第一个项目就能马上获益:开发周期短、应用程序稳健。设计用户界面(UI)是许多windows程序员头疼的问题,而这恰好是Delphi的长处。用户界面的设计和程序的布局被称为原型化。在非可视化的开发环境中,应用程序的原型化经常比真正实现程序的时间还要长。一个简洁直观、令人愉悦的用户界面是应用程序的一大部分。

  Delphi能够用它的自定义控件或自己开发的控件来快速建立您需要的用户界面。当你能熟练运用窗口、控件和事件响应方法以后,将发现过去要花很大精力的原型化工作现在大大简化了。同时,用Delphi开发的用户界面丝毫不比用传统的开发工具建立的用户界面逊色。在Delphi中你在设计期看到的往往就是最终的产品。

  4.结束语

  综上所述,大家可发现Delphi 5本身就是一个功能十分强大的面向对象开发平台,它的可视组件库VCL(VisualComponent Library)是一个易学、易用、高效的可重用的软件对象,还包含有丰富的数据库应用,通讯组件。Delphi自身就是使用VCL编写而成的;不仅界面开发方便迅速,而且对于系统所带组件和自编组件的运用就如同组态一样。只要将组件放置在窗体中,用鼠标移动到你要求的位置,改变某些属性以满足你的要求。

时间: 2024-08-10 03:46:48

Delphi程序开发特点分析的相关文章

043_《Delphi程序开发范例宝典(第2版)》

<Delphi程序开发范例宝典(第2版)> Delphi 教程 系列书籍 (043) <Delphi程序开发范例宝典(第2版)> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 Part3 作者: 梁水 丛书名: 软件工程师典藏 出版社:人民邮电出版社 ISBN:9787115216762 上架时间:2010-1-8 出版日期:2010 年1月 开本:16开 页码:770 版次:2-1 内容简介 本书全面介绍了delphi程序开发所

现流行数据库程序开发工具的比较分析

比较|程序|数据|数据库 [程序开发系列一]现流行数据库程序开发工具的比较分析 武汉华中师大信管系 谢刚 摘要:随着计算机技术不断发展,各种数据库编程工具也随着发展,使当今的大多数程序开发人员可以摆脱枯燥无味的用计算机指令或汇编语言开发软件,而是利用一系列高效的.具有良好可视化的编程工具去开发各种数据库软件,从而达到事半功倍的效果,但是现在市面上的数据库编程工具门类众多,优良不齐,比如VB,VC,DEPHI,PB等,对此我特别针对流行的开发语言介绍相应的较为成熟的数据库编程工具. 关键字:数据库

利用VFW在Delphi中开发视频捕获程序

摘要:许多关于视频的软件(如视频会议.可视电话等)开发都应用于视频捕获技术.微软为软件开发人员提供了一个专门用于视频捕获的VFW SDK,从而为在Windows系统中实现视频捕获提供了标准的接口,并大大降低了程序的开发难度.由于VFW SDK只有VC和VB版,没有Delphi版,因此需要在Delphi中一一声明DLL中的各个函数和变量.文中详细介绍了如何利用VFW在Delphi中开发视频捕获程序的步骤,同时给出了程序实例. 1 引言 视频捕获与实时处理是目前图像处理系统中最关键的技术之一,能否准

056_《Delphi应用程序开发精彩实例》

<Delphi应用程序开发精彩实例> Delphi 教程 系列书籍 (056) <Delphi应用程序开发精彩实例> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 作者: 杨志国 王小琼 李世姣 丛书名: 其他 出版社:机械工业出版社* ISBN:7111116135 上架时间:2003-4-17 出版日期:2003 年4月 开本:16开 页码:411 版次:1-1 内容简介 作为一个优秀的.面向对象的可视化开发工具,Delphi拥有快捷方便的开

在Delphi中开发使用多显示器的应用程序

Windows可以将多个显示器映射为虚拟桌面,使我们可以利用这一点设计出方便工作的应用程序. 例如PowerPoint就充分发挥了双显示器的优势(大多数的笔记本电脑都支持),它可以在一个显示器上播放幻灯片,而在另一个显示器上显示备注,可以控制播放的进程,使使用者做商务演说的时候非常等心应手.那么我们怎么开发这种应用程序呢?这篇文章将向你展示如果用Delphi实现使用多显示器的应用程序. Windows还支持克隆显示方式,每个显示器输出同样的内容,这对某些应用也是有意义的.还有些显卡虽然也支持两个

115_《Delphi信息系统开发实例精选》

<Delphi信息系统开发实例精选> Delphi 教程 系列书籍 (115) <Delphi信息系统开发实例精选> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 Part3 Part4 作者: 赛奎春 宋坤 赵智勇 刘强等 丛书名: 信息系统开发实例精选丛书 出版社:机械工业出版社* ISBN:7111167619 上架时间:2005-9-5 出版日期:2005 年8月 开本:16开 页码:415 版次:1-1 内容简介 本书精

Delphi 程序错误写法造成Oracle数据库负载异常

本文讲的是Delphi 程序错误写法造成Oracle数据库负载异常 作者介绍 张洪涛 富士康 DBA 注意:本文涉及的问题在9i的环境中测试的,经验证,同样适用于11g. 在用Toad的SGA Trace工具监控我们的Oracle 9.2.0.8 Patch 31古董数据库时发现一条奇怪的SQL,它占到数据库整体逻辑读50%以上,SQL如下: 这条SQL单次执行逻辑读不到900,但执行非常频繁,它本意想查询HRM.ORGANIZATION表的表与索引信息. 程序员应该不会特意写这种SQL,那它到

076_《OpenGL图形程序开发实务》

<OpenGL图形程序开发实务> Delphi 教程 系列书籍 (076) <OpenGL图形程序开发实务> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 作者: 薛惠锋 吴慧欣 解丹蕊 出版社:西北工业大学出版社 ISBN:7561219393 上架时间:2006-9-6 出版日期:2005 年8月 开本:16开 页码:293 版次:1-1 内容简介 OpenGL作为一种图形工业标准,在实际工作中应用广泛并占有非常重要的地位.本书采用在Delp

Delphi xe4开发的软件, 出现各类型的报错, 求解决或查错方案.

问题描述 Delphi xe4开发的软件, 出现各类型的报错, 求解决或查错方案. 属于2次开发, 程序代码接手后. 在使用途中出现各种报错, 有各种内存报错, 或其他都是非常难重现的错误, 目前安装了EurekaLog, 但仍然无法定位, 会跳到一些莫明其妙的代码上. 程序属于比较大型的. 客户端是DELPHI开发, 服务端是C++开发, 客户端是单个EXE的结构, 带少量第3方的DLL. 更换过fastmm, 用过sharemem之类无效. 程序内部也有多个线程, 且有多个timer. 定位