理论教育 编译器设计:Delphi基础

编译器设计:Delphi基础

时间:2023-11-04 理论教育 版权反馈
【摘要】:虽然Delphi本身的确存在一定不足,尤其是IDE环境,但是这丝毫不影响其成为一代经典之作。同时,Delphi 7又是Delphi家族中口碑最好、应用最广的一个产品。对于广大的程序开发人员而言,使用Delphi开发应用软件,无疑会大大提高编程效率。可惜的是Delphi 7却成了后继版本无法超越的传奇。目前,Embarcadero公司研发的CodeGear RAD Studi0 2010是最新的Delphi版本。图1-4 Delphi 7的IDE主窗口。3.项目开发与调试关于Delphi语言的细节,笔者无法在此尽解。

编译器设计:Delphi基础

1.Delphi简介

本书以Pascal语言为蓝本讨论编译器的设计与实现,因此,建议读者安装一个通用的Pascal编译器作为参考。目前,可供选择的Pascal编译器并不少,例如,Turbo Pascal7.0、Free Pascal、GNU Pascal( GPC)、Delphi 7等。这里,笔者还是推荐Delphi 7。相对其他编译器而言,Delphi毕竟是一个曾经风靡一时的商用编译器。虽然Delphi本身的确存在一定不足,尤其是IDE环境,但是这丝毫不影响其成为一代经典之作。同时,Delphi 7又是Delphi家族中口碑最好、应用最广的一个产品。因此,笔者认为还是值得尝试的。鉴于有些读者可能对Delphi比较陌生,下面,笔者将对Delphi语言及其开发环境作简单介绍。

Delphi作为一种可视化的编程环境,提供了方便、快捷的Windows应用程序开发工具。Delphi使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了可重用的完整的面向对象的程序语言(Object-Oriented Language),是当今最快的编译器,拥有领先的数据库技术。对于广大的程序开发人员而言,使用Delphi开发应用软件,无疑会大大提高编程效率

Delphi l.0诞生于1995年,作为Borland公司主推的Windows开发工具,其设计初衷就是以Visual Basic作为竞争对手的。历经4年发展,Borland终于推出了Delphi历史上的第一个经典版本Delphi 5.0。由此Delphi也一度成为最流行的编程语言之一,几乎可以与盛极一时的C/C++媲美。

2002年8月,Delphi 7正式登上历史舞台,其灵活、易用、快捷等特性吸引了大批国人的眼球,成为当时应用软件开发的主要工具平台。在国内,其市场份额是Visual Basic无法比拟的。可惜的是Delphi 7却成了后继版本无法超越的传奇。此后,Borland公司也陆续推出了Delphi 8、Delphi 2005、Delphi 2006、Delphi 2007等。不过,随着核心开发人才的流失,产品的竞争力有所降低,根本无法面对Java、C#等新语言的挑战。由于开发工具领域的激烈竞争,Borland公司也无心恋战,以至于Delphi失去了当年的辉煌。

2008年5月7日,Borland公司正式将其负责开发工具研制的子公司CodeGear出售给Embarcadero公司。目前,Embarcadero公司研发的CodeGear RAD Studi0 2010是最新的Delphi版本。

2.集成开发环境

Delphi 7的IDE(如图1-4所示)主要包括7个部分:主窗口、组件面板、工具栏窗体设计器、代码编辑器、对象观察器(Object Inspector)和代码浏览器。程序员借助于IDE可以很方便地完成创建、调试、修改应用程序等各种操作。

978-7-111-32164-4-Chapter01-36.jpg

图1-4 Delphi 7的IDE

(1)主窗口。主窗口(如图1-5所示)是Delphi IDE的控制核心。它具有其他Windows应用程序的主窗口所具有的大多数特性。主窗口主要包括4部分:菜单栏、工具栏、标题栏和组件面板。

978-7-111-32164-4-Chapter01-37.jpg

图1-5 Delphi 7的主窗口

(2)窗体设计器。Delphi是著名的RAD工具,可以方便地开发所见即所得的Windows应用程序。而Windows的窗口界面设计主要就是在窗体设计器内完成的。在创建新的项目时,窗体设计器是一个空白的窗口。可以把窗体设计器看成一块画布,在这块画布上可以描绘出各种各样的Windows应用程序。应用程序的用户界面正是由窗体实现的。只要从组件面板上选择一个组件并把它放到窗体上,就能够实现与窗体设计器的交互。可以用鼠标调整组件在窗体设计器上的位置和大小,还可以用对象观察器和代码编辑器来控制组件的外观和行为。

(3)对象观察器。利用对象观察器(如图1-6所示),可以修改窗体或组件的属性,或者使它们能够响应不同的事件。属性(Property)是一些数据,如高度、颜色、字体等,它们决定了组件在屏幕上的外观。事件(Event)则是一种消息处理机制,它能够捕捉某种情况的发生并做出反应,像鼠标单击和窗口打开就是两种典型的事件。对象观察器包括Properties选项卡和Events选项卡,切换时只需在窗口上部单击所需选项卡的标签即可。至于对象观察器中显示哪个组件的属性和事件,取决于选中的组件。

(4)代码编辑器。代码编辑器是输入代码来指定应用程序行为的地方,也是Delphi根据应用程序中的组件自动生成代码的地方。代码编辑器每一页对应着一个源代码模块或文件。当向应用程序中加入一个窗体时,Delphi会自动创建一个新的单元,并添加到代码编辑器顶部的标签中。当进行编辑的时候,快捷菜单提供了很多选项,如关闭文件、设置书签等。

978-7-111-32164-4-Chapter01-38.jpg

图1-6 对象观察器

(5)代码浏览器。代码浏览器以一种树状视图的方式显示了列在代码编辑器中的单元文件。通过代码浏览器,可以方便地在单元文件中漫游或在单元文件中加入新的元素或者把已有的文件改名。要记住代码浏览器和代码编辑器有一一对应的关系。在代码浏览器中右击一个结点即可以看到该结点的可用选项。也可以通过修改主菜单Tools—Environment Options中的Explorer选项卡来控制代码浏览器的行为,如排序和过滤等。

3.项目开发与调试(www.daowen.com)

关于Delphi语言的细节,笔者无法在此尽解。下面,笔者详细讲述一个简单的控制台程序的开发过程,以便读者对Delphi项目开发及IDE的使用有初步了解。这里,之所以选择控制台程序是因为其更接近标准Pascal。

(1)新建工程。单击“File”菜单→“New”→“Other...”,即出现“New Items”窗口,

如图1-7所示。选择“Console Application”后,即显示代码编辑窗口。

978-7-111-32164-4-Chapter01-39.jpg

图1-7 New Items窗口

控制台程序是最有利于剖析编译器内核的,这绝不是信口开河。读者所见到的窗体、界面都是Windows提供的API接口而已,编译器需要做的只是像调用普通函数一样调用系统接口即可。至于RAD的效果完全是IDE的任务,并不是编译器所关心的。事实上,一切界面最终都将以源程序的形式输入编译器,编译器则根据约定传参调用系统API生成相应的界面。因此,学习编译器的最好办法就是避开那些外围的附件,直击其内核。

(2)编写程序。在代码编辑窗口中,读者参照如图1-8所示的程序段,录入相应的程序代码。

978-7-111-32164-4-Chapter01-40.jpg

图1-8 代码编辑窗口

这个程序的功能是从终端读入两个整数后,计算这两个整数的和并输出。这里,值得注意的是,Delphi与标准Pascal还是有一定差异的。例如,第2行的“{$APPTYPE CONSOLE{”是Delphi特有的编译指令,表示该项目是控制台程序。再如,第4行的“SysUtils”是Delphi的系统库,读者不必过多关注。

(3)运行与调试。代码输入完毕,只需按“F9”键即可运行程序,亦可通过单击“Run”菜单→“Run”运行。Delphi提供的调试工具是比较强大的,包括断点、监视、调用栈、线程等,读者可以通过“View”菜单→“Debug Windows”选择使用。下面,笔者介绍一下与编译器设计相关的调试功能一一汇编调试。

在程序运行过程中,使用功能键“Ctrl+Alt+C”即可打开CPU窗口,如图1-9所示。

978-7-111-32164-4-Chapter01-41.jpg

图1-9 Delphi的CPU窗口

在应用Delphi开发实际系统时,CPU窗口主要的功能是帮助用户进行汇编级的调试,它非常直观地显示了编译得到的汇编代码,并且允许用户监视通用寄存器、内存、标志寄存器等资源的状况。这与Visual Studio IDE的反汇编调试是非常类似的,相信有经验的读者应该比较熟悉。这里,笔者介绍Delphi汇编级调试的目的就是希望读者能够结合实例程序学习Delphi的编译机制,这对于深入理解本书的内容将是非常有利的。不过,可惜的是Delphi并不提供输出汇编程序代码的功能,因此,只能借助CPU窗口来查看编译得到的汇编程序代码。

(4)联机帮助。单击“Help”菜单→“Delphi Help”即可打开联机帮助。与许多联机帮助一样,Delphi的联机帮助也是一部非常经典的教科书。不熟悉Pascal语言的读者可以阅读其中的“Delphi Language Guide”,它对学习Pascal语言是有一定帮助的。当然,更重要的是它还提供了一份完整的Delphi文法,读者可以参见“Delphi Language Guide”→“Object Pascal grammar”部分,如图1-10所示。这是Neo Pascal文法的一个重要来源,因此,建议读者参考品味。

978-7-111-32164-4-Chapter01-42.jpg

图1-10 Object Pascal文法

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈