博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delphi 基础之四 delphi 组织结构
阅读量:5039 次
发布时间:2019-06-12

本文共 2561 字,大约阅读时间需要 8 分钟。

delphi 组织结构

在Delphi中,一个正在开发的应用程序可以被称作项目或者工程。一般地,一个项目主要由dpr(项目)、pas(单元)和dfm(窗体)三种文件组成,另外还有一些附属文件,如res(资源)文件等。在源代码中,项目文件用关键字program标识,单元文件用unit标识。

 

通常,一个项目只有惟一的dpr文件。一个dfm文件总是有对应的pas文件,但是pas文件可以没有对应的pas文件。

 

如果打开Delphi,选择菜单File|New|Application,则可以新建一个项目。该项目包括一个项目文件——Project1.dpr、一个窗体文件——Unit1.dfm和一个对应的单元文件——Unit1.pas。

这些文件的内容都必须按照一定的组织结构来编写,编译器按照既定的组织结构来识别这些内容并进行编译。在本节里,我们讨论program和unit两种单元文件的组织结构。

 

Program的组织结构

 

一个项目文件被关键字program标识,因此,在这里我将项目文件的源代码称作program。以下是一个简单的program:

program Project1;   {文件定义:一个名为Project1的项目文件}

uses                {在program中需要使用到哪些单元}

Forms,

Unit1 in 'Unit1.pas' {Form1},

Dialogs;

Var   {在这里可以定义一些变量和常量}

AppMsg: String;

{$R *.res}  {$R是一个编译指令,此处表示要编译资源文件Project1.res}

{这个部分可以实现一个函数和过程}

procedure AppStart(AppMsg: String);

begin

ShowMessage(AppMsg);

end;

{begin…end部分是program的主体,这里面的代码是可以运行的}

begin

    Application.Initialize; {应用程序初始化}

    Application.Title := 'lxpbuaa';

    Application.CreateForm(TForm1, Form1); {创建主窗体}

    AppMsg := '应用程序马上开始运行。';

    AppStart(AppMsg);

    Application.Run;

end.

 

 Unit的组织结构

    一个单元文件被关键字unit标识,因此,在这里我将单元文件的源代码称作unit。以下是一个完整的unit:

unit Unit1; {文件定义:一个名为Unit1的单元文件}

interface   {在这个部分声明可供其他单元使用的变量、常量、类型、函数和过程}

uses        {interface部分的uses内容对整个单元都有效}

  Windows, Messages, Classes, Controls, Forms, Dialogs, Contnrs;

type        {声明类型}

  TForm1 = class(TForm)

  private

    procedure ShowInfo(Info: String);

  public

    { Public declarations }

  end;

  {声明函数和过程}

  procedure ShowInfo(Info: String);

var             {声明变量}

  Form1: TForm1;

implementation  {在这个部分完成单元的私有声明,并实现interface声明的类、函数和

                          过程}

uses            {implementation部分的uses内容只对implementation有效。

                 interface不需要而implementation需要的单元应该在这里引用}

  SysUtils, Variants;

var             {implementation部分可以和interface部分一样进行声明}

  ObjList: TObjectList;

{$R *.dfm}      {编译对应的dfm文件}

{实现interface部分声明的函数和过程}

 

procedure ShowInfo(Info: String);

begin

  ShowMessage(Info);

end;

{实现interface部分声明的类}

{ TForm1 }

procedure TForm1.ShowInfo(Info: String);

begin

  ShowMessage(Info);

end;

 

{单元初始化部分}

initialization

  ObjList := TObjectList.Create;

 

{单元终止部分}

finalization

  FreeAndNil(ObjList);

end.

 

从上面的Unit1单元可以看到,一个unit可以包含五个部分:

 

(1)unit关键字部分,指定单元的名字。

 

(2)interface部分。从关键字interface到implementation为止的内容,都是属于这个部分。该部分可以声明变量、常量、类型、函数和过程,而且它们对于其他单元都是可见的。

 

(3)implementation部分。在这个部分也可以完成interface具有的声明功能,但是它们对于其他单元是不可见的,属本单元私有;同时完成类、函数和过程的实现。

 

以上三个部分是一个unit必须的。接下来的两个部分是可选的。

 

(4)initialization。在这个部分可以完成单元的初始化工作。如果将一个单元比作一个类,我们知道类的初始化是在构造函数Create中完成的,所以initialization部分就相当于单元的构造函数。

 

(5)finalization。在这个部分可以完成单元的终止,完成类似于类的析构函数Destroy的功能。

 

需要注意的是:如果几个单元都有initialization/finalization部分,则它们的执行顺序与这些单元在program的uses字句中的出现顺序一致。所以应该避免initialization/finalization部分的代码执行时依赖于它们的执行顺序。

转载于:https://www.cnblogs.com/bjxsky/p/4610263.html

你可能感兴趣的文章
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
mybatis中>=和<=的实现方式
查看>>
Python面向对象03/继承
查看>>
java序列化和反序列化
查看>>
绝对定位
查看>>
flink源码编译(windows环境)
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
std::nothrow
查看>>
rest-framework 分页器
查看>>