小甲鱼 发表于 2013-7-1 20:58:34

Delphi的项目组成详解

Delphi的项目组成详解

Delphi 为每个项目建立了相当数目的文件。这些文件中,一部分是在设计阶段产生的,如项目文件(.DPR)、单元文件(.PAS)和窗体文件(.DFM)等。还有一些则是在编译阶段产生的,如对象映射文件(.DSM)、编译单元文件(.DCU)等。当然,项目中还包括一些非 Delphi生成的文件,如位图、图标、鼠标指针等资源文件。

这些文件一部分要由用户保存时命名。一部分文件由 Delphi 自动产生,这些文件的命名主要取决于用户为项目和窗体所取的名称以及 Delphi 和系统欲定义的文件扩展名。这些文件构成了一个完整项目,但常用的文件并不多,主要是项目文件(.DPR)、单元文件(.PAS)、窗体文件(.DFM)以及一些资源文件。前面已经介绍了窗体文件,这里着重介绍单元文件和项目文件。

1. 单元文件

单元文件是组成应用源代码的主要部分,无论是窗体事件处理过程还是单独的源代码都保存在单元文件中。单元文件可以分为两种:有窗体文件和无窗体文件。每当用户在项目中新建一个窗体,例如使用【File】菜单的【New Form】命令新建窗体,都会自动产生一个单元文件。

如果用户需要产生一个无窗体文件,可以使用【File】菜单中的【New Unit】命令。下面给出一个典型的有窗体的单元文件的结构。

Delphi的项目组成

Delphi 为每个项目建立了相当数目的文件。这些文件中,一部分是在设计阶段产生的,如项目文件(.DPR)、单元文件(.PAS)和窗体文件(.DFM)等。还有一些则是在编译阶段产生的,如对象映射文件(.DSM)、编译单元文件(.DCU)等。当然,项目中还包括一些非 Delphi生成的文件,如位图、图标、鼠标指针等资源文件。

这些文件一部分要由用户保存时命名。一部分文件由 Delphi 自动产生,这些文件的命名主要取决于用户为项目和窗体所取的名称以及 Delphi 和系统欲定义的文件扩展名。这些文件构成了一个完整项目,但常用的文件并不多,主要是项目文件(.DPR)、单元文件(.PAS)、窗体文件(.DFM)以及一些资源文件。前面已经介绍了窗体文件,这里着重介绍单元文件和项目文件。

1. 单元文件

单元文件是组成应用源代码的主要部分,无论是窗体事件处理过程还是单独的源代码都保存在单元文件中。单元文件可以分为两种:有窗体文件和无窗体文件。每当用户在项目中新建一个窗体,例如使用【File】菜单的【New Form】命令新建窗体,都会自动产生一个单元文件。

如果用户需要产生一个无窗体文件,可以使用【File】菜单中的【New Unit】命令。下面给出一个典型的有窗体的单元文件的结构。

unit Unit1;
interface
uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
      TForm1 = class(TForm)
                Button1: TButton;
                procedure Button1Click(Sender: TObject);
      private
                { Private declarations }
      public
                { Public declarations }
      end;

var
      Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
      {code}
end;

end.
代码首句指出了单元名,单元名必须与单元文件名保持一致。如果保存时文件名变为“FishC.pas”,则首句相应变为:
unit FishC
代码中的“uses”语句指出了单元文件在编译时要链接哪些单元,如 Windows、Messages、SysUtils、Classes、Graphics、Controls、Forms、Dialogs、StdCtrls等,因为这些单元中包含了编程中所调用的一些函数、对象等。

“type”语句为窗体的类声明。类声明中包括了窗体中的组件和事件响应过程名。如语句“Button1: TButton;”指出了组件类型(TButton)和组件的 Name 属性(Button1),除处理Name 属性外,设置其他属性不会影响单元文件源代码。

添加新的事件处理过程对单元文件的影响最大,每为一个事件定义一个处理过程,窗体的类型定义下就会多出一行,执行部分中就会加入一个空白处理过程,窗体文件中也会相应存入一些信息。例如,上面的“type”语句下定义了一个处理过程。

procedure TForm1.Button1Click(Sender: TObject);
而在实现部分(implementation)中,出现了一个空白处理过程。
procedure TForm1.Button1Click(Sender: TObject);
begin
      {code}
end;
用户可在“begin”和“end”之间添加自己的事件处理代码。

2. 项目文件

项目文件对应用至关重要。它由 Delphi 自动建立,一般用户不需要改变它。项目文件是真正意义上的 Pascal 源代码文件。它描述了整个应用程序的结构及启动代码:

program Project1;
uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
end.
用户可以通过【Project】菜单的【View Source】命令来查看项目文件。
上面的代码首行给出了项目名称:program Project1;

“uses”语句中列出了组成项目的单元文件,其中有些单元文件还有相应的窗体文件,编译项目时,Delphi 将首先编译各个单元文件及其相应的窗体文件,然后再将其链接成可执行文件。例如:Unit1 in 'Unit1.pas' {Form1};

该语句说明项目包含了单元文件“unit1.pas”,而后面的括号对“{Form1}”则说明单元文件有相应的窗体文件“Form1.dfm”。

接下来是编译指令“{$R *.RES}”,表示把项目中所有资源文件全部包括进来。“begin”和“end”之间的代码段所起的作用是初始化应用程序、创建表单和启动应用程序。

猫儿不想叫 发表于 2013-7-1 21:22:48

近期正在学习delphi 谢谢鱼哥的倾情奉献!

eeeeelin 发表于 2013-7-1 22:07:26

不知不觉到了下半年的第一天,原来自己学习数据结构已经有半年了,希望自己更加努力,学得更好!!!{:5_95:}

终极范特西 发表于 2013-7-1 22:29:43

支持,,, :lol

Cocol 发表于 2013-7-3 19:55:14

看看,回帖支持下

我挖 发表于 2013-7-4 18:58:12

再看看,回帖支持支持

怡静 发表于 2013-7-5 06:20:13

强烈支持楼主ing……

sejung 发表于 2013-7-6 09:07:20

嗯,正在学习中,支持一下!

怡静 发表于 2013-7-14 01:37:54

谢谢楼主分享!

怡静 发表于 2013-7-15 00:27:34

祝鱼C论坛红红火火!

flykewei 发表于 2014-7-4 16:27:41

对我们这些初学者有用哦

cable5881 发表于 2014-8-14 16:31:02

谢谢楼主分享!!!!!!!!

Angel丶L 发表于 2015-2-2 01:01:15

逛一逛,瞧一瞧,顶一顶,没坏处
页: [1]
查看完整版本: Delphi的项目组成详解