delphi 基础之四 delphi 组织结构

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部分的代码执行时依赖于它们的执行顺序。

时间: 2024-08-25 10:31:29

delphi 基础之四 delphi 组织结构的相关文章

Delphi基础知识汇总

☆Delphi基础数据类型 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 4294967295 4 无符号32位 Shortint -128 .. 127 1 有符号8位 Smallint -32768 .. 32767 2 有符号16位 Longint -2147483648 .. 2147483647 4 有符号32位 Int64 -263 .. 263 8 有符号64位 Byt

zw版【转发·台湾nvp系列Delphi例程】Delphi 使用 HALCON库件COM控件数据格式转换

zw版[转发·台湾nvp系列Delphi例程]Delphi 使用 HALCON库件COM控件数据格式转换 Delphi 使用 HALCON库件COM控件数据格式转换,与IHObjectX接口有关 var rg0,rg1 : HRegionX;begin rg0 := CoHRegionX.Create; rg0.GenRectangle1(10,10,150,150); rg1 := CoHRegionX.Create; rg1.GenRectangle1(200,200,250,250); r

Delphi XE8中Delphi和JAVA数据类型对应关系!

Delphi XE8中Delphi和Java数据类型对应关系所在单元文件:Androidapi.JNI.JavaTypes 对应关系: JObject = interface;//java.lang.Object JInputStream = interface;//java.io.InputStream JByteArrayInputStream = interface;//java.io.ByteArrayInputStream JOutputStream = interface;//jav

[Delphi]Python For Delphi使用大全 (转)

原始地址:http://blog.csdn.net/kernelspirit/article/details/760413 Python For Delphi搭建了Delphi和强大的脚本语言Python的桥梁,使用起来非常方便,让Delphi华丽的界面配合Python强大.简洁.稳定的后台逻辑处理能力,让应用程序模块清晰.界面漂亮.后台复杂逻辑不再复杂,大幅提高开发效率.使用的时候出现了一些容易忽视造成的问题,现总结如下. 版本 Python For Delphi支持的Python版本为2.3

(赵小明RHCE笔记)linux基础之四 权限详解

一.special permissions for executables1.special permissions for executables:  -suid:command run with permissions of the owner of the command,not executor of   the command  -sgid:command runs with group affiliation of the group of the commandeg:file:us

delphi 基础书籍推荐

本文所推荐的书,我均仔细读过,受益良多. 1. Pascal 精要.下载Pascal精要 本书讲Pascal 语言基本知识. 2. Object Pascal 参考(中英文对照版).下载Object Pascal参考 本书讲面向对象Pascal 基础知识 3. Delphi 算法与数据结构.本书是PDF,此处不能上传,请自行搜索并下载 本书讲:查找,排序,链表,队列等稍进阶的知识,强烈推荐! ----------------------------------------------------

delphi 基础之三 文件流操作

文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向.流不但可以处理文件,还可以处理动态内存.网络数据等多种数据形式.如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的. 一.Delphi中流的基本概念及函数声明 在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性

Delphi基础语法的学习笔记和注意事项总结

以下是我在自学Delphi的时候,对一些注意点的简单总结,并没有什么系统性可言,只是一个学习时顺手记下的笔记,主要为了当时加深对知识的印象,并没有希望能在以后的复习和使用Delphi中有什么多大的参考作用.    缺少Delphi的各种数据类型的介绍……知识点. 1.     Delphi编译器自动对全局变量符初值.当程序开始时,所有的整型变量赋值为0,浮点数赋值为0.0,指针为null,字符串为空等等,因此,在源代码中不必对全局变量赋0初值 2.     Object Pascal允许在con

delphi 基础之三 编写和调用dll文件

delphi 编写和调用dll文件   Windows 的执行文件可以划分为两种形式程序和动态连接库 (DLLs).一般程序运行是用.EXE文件,但应用程序有时也可以调用存储在DLL的函数. 在如下几种情况下,调用DLL 是合理的: 1) 不同的程序使用相同的DLL ,这样只需要将DLL 在内存中装载一次,节省了内存的开销. 2) 当某些内容需要升级的时候,如果使用DLL 只需要改变DLL 就可以了,而不需要把整个程序都进行变动. 3) 由于DLL 是独立于语言的,所以,当不同语言习惯的人共同开