delphi架构

概要介绍:
Object Pascal语言的结构比较特殊,跟C有很大的不同,但是它秉承PASCAL语言的一贯结构化的传统,相信大家很容易就可以了解。

一:Program 单元
    一个object  Pascal程序,是由一个特殊的单元和若干个可选的单元组成的,也就是说一个最简单的Object Pascal程序,可以只由一个特殊的单元组成,这个特殊的单元就是Program 单元。在Delphi中,Program 单元也就是Delphi的工程文件。Program 单元从功能上讲,有点像C语言中的主程序,程序再简单,它也得有一个Main函数。Program单元也就是这样的主程序。当然,一个程序如果只有 Program单元,它也没多大实际意义(除了一些完成特殊任务的程序外),事实上Delphi的程序至少有一个子程序,即后面要介绍的子程序单元。

    下面列出一个典型的Program单元:

Program Project1;
Uses
  Forms,
  Unit1 in 'Unit1.pas';

{$R *.RES}

Begin
  Application.Initialize;
  Application.CreateForm(Tform1,Form1);
  Application.Run;
End;

    Program单元由以下几个部分组成:

    程序首部,由保留字Program后跟一个程序名组成,上例中是Project1。程序首部也可以带有参数,
不过一般很少用到。

    引用部分,由保留字Uses加要引用的单元名组成,上例中有两个,分别是Forms单元和Unit1单元,
其中Unit1单元还指定在Unit1.pas文件中。最简单的程序可以没有USES部分。

    编译指令,上例中,只有一个编译指令{$R *.RES},编译指令也是可选的。

    执行部分也称初始化部分,由保留字Begin和End括起来的一段代码。

    注意:用Delphi开发程序,除了一些特殊需要,如检查第二个实例是否运行,一般很少需要手工修改Program单元,因为Delphi能够自动建立和 维护这个单元,例如当您开始一个新的工种的时候,Delphi自动建立一个Program单元和一个子程序单元。当您向工程中加入了一个新的Form或 Unit,或者使用Project|Option…子命令修改了程序名,program单元将自动更新。


二:子程序单元(Unit)
    子程序单元这种叫法只是为了和Program单元区别,由于大多数时候,我们几乎不需要接触Program单元,所以以后我们提到单元即是指子程序单元。
    Object pascal的一个单元,就是一个独立的Pascal源文件,扩展名为.Pas。单元的结构分为以下几个部分:

首部
接口部分
实现部分
  初始化部分
  终止部分
End;

1:单元首部
单元首部类似于程序单元首部,由保留字Unit加单元名组成,如:

    Unit Unit1;

    注意:单元首部也是一个完整的语句,因此单元名后应当跟分号,另外单元名必须符合Object Pascal关于标识符的规则,并且在同一个工程中单元名必须是唯一的。

    当您保存文件时,您使用的保存文件名,将自动反映到这个部分。而且也会加到程序单元的USES部分中。因此,如果您工程中提示某文件缺失,你可以检查一下 这个文件的路径和名称是否改动过。DELPHI工程的文件是不必放在同一目录下的(但是我建议您这么做,便于管理)。


2:Interface部分 
    Interface部分称为接口部分,用于声明引用的、常量、类型、变量、过程和函数,单元的Implementa-tion部分(实现部分)也可以声明引用的单元、常量、类型、变量、那么这两者有什么区别呢?

    在Interface部分声明的引用单元、常量、类型、变量、过程和函数对整个程序是公共的,也就是对所有引用该单元的单元来说,这些声明都是可见的、可 访问的,例如引用该单元的单元就可以调用在Interface声明的过程和函数。Interface部分相当于类类型的Public部分。

    Interface部分从保留字Interface开始到保留字Implementation前结束。

    在Interface部分,过程和函数只需写出它们的首部,具体的定义是在下面的Implementation(实现部分)给出的。

    Interface部分本身又可以由几个可选的部分组成,分别是单元引用部分(Uses)、常量声明部分、类型声明部分、变量声明部分、过程和函数声明部分。

    单元引用部分(uses)用于列出该单元要引用的标准单元和其它单元。单元引用的概念有点类似于C语言中的INCLUDE,用于把外部的已声明过的常量、 类型、变量、过程或函数引入到本单元中使用,其中标准单元是指Object Pascal预定义好的单元,例如Windows单元、SysUtils单元、Forms单元等,您也可以把其它非标准单元加到Uses,这样该单元也就 能引用这些单元中的常量、类型、变量过程和函数等。当您往一个表单上加入控件时,该控件的单元将自动加到该部分,如果你还看不到,存盘就可以看到了。

    下面是一个示例:

Unit Unit1;
Interface
Uses Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Diglogs;
Type
  Tform1=Class(Tform)
  Private
  Public
  End;
Var
  Form1:Tform1;

Implementation

{$R *.DFM}
End.

    这是一个典型的Delphi自动生成的单元,它仅给出这个表单的结构。在Uses部分,引入了Windows,Messages,SysUtils,Classes,Graphics等单元,这样就可以直接调用这些单元中的例程,而无需加入单元引用名。例如:
    MessageBeep(0);

    而不需要这么写:
    Windows.MessageBeep(0);

    尽管这个例程是在Windows单元中声明的。
    注意:如果Interface部分有Uses部分,Uses保留字必须紧跟在保留字Interface后面,尽管可以不在同一行。

    上例中,引用的单元都是标准单元,其中有的标准单元几乎是所有的单元都要用到的,因此Delphi自动把这些加到您的单元的Uses 部分,不过一些不太常用的单元,如果您的程序中要引用,您就必须自已手工把它们加到Uses部分。例如,在程序如果你需要使用sndPlaySound函 数来播放一个WAV文件,而这个函数是在mmsystem单元中声明的,因此,你需要在Uses 部分加入mmsystem,记得在加入在分号之前,与其他单元用逗号隔开。

    加入到Uses单元的顺序一般是无关紧要的,但是有的单元如ShareMem单元必须放在第一个。
    最后强调一点,就是如果Interface 部分同时有这几个部分,一定要按照单元引用、常量声明、类型声明、变量声明、过程和函数的顺序排列。


3:Implementation部分
    Implementation部分分为两大块,一块是声明部分,包括单元引用、常量、类型、变量、过程和函数的声明,这一点跟Interface部分相 似,所不同的是,在Implementation部分声明的单元引用、常量、类型、变量、过程和函数只对本单元是公共的、可见的,其它单元即使引用了该单 元,也不能访问它们。另一个不同点是,在Implementation部分声明的过程和函数,不需要遵循先声明后定义的规则,而只要直接写出过程或函数的 定义。

    Implementation部分的另一大块是在Interface部分声明的过程和函数的定义,程序示例如下:

Unit Unit1;
Interface
Uses Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Diglogs;
Type
  Tform1=Class(Tform)
     Procedure FormCreate(Sender:Tobject);
  Private
  Public
  End;
Var
  Form1:Tform1;

Implementation

{$R *.DFM}
Procedure Beep;
Begin
  MessageBeep(0);
End;
Procedure Tform1.FormCreate(Sender:Tobject);
Begin
  Beep;
End;
End.


4:Initialization部分
    单元中可以有Initialization部分,这个部分也称为初始化部分,用于对该单元进行初始化。例如给变量赋初值,分配资源等,不过一般很少用到。

    Initialization部分由保留字Initialization加一些语句构成,语句可以是单个语句,也可以是复合语句,如果是复合语句,应当用Begin和End括起来。

    如果有多个单元含有Initialization部分,它们的执行顺序和这些单元在Program单元的Uses 部分出现的顺序是一致的。


5:Finalization部分
    如果单元有Initialization 部分,这个单元才能有Finalization,终止部分的语法和初始化的部分是相似的,是由保留字Fnialization加一些语句构成的,语句可以 是单个语句,也可以是复合语句,如果是复合语句,应当用Begin和End括起来。

    如果有多个单元含有Finalization部分,它们的执行顺序跟Initialization执行的顺序正好相反。

    注意:Finalization部分的代码应当能考虑到这样一种情况,就是单元的Initialization部分在执行过程中可能会被意外终止,也就是说可能会出现这么一种情况,就是有些指针的值是nil,那么在相应地终止,应当避免出现对这些指针的引用。

转载于:https://www.cnblogs.com/yinwei-space/p/4086775.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MateyFrame是一款由Delphi开发的三层架构框架,经过多年的升级改进,版本由MateyFrame V1.0升级到了当前的MateyFrame V5.0版本。MateyFrame V5.0具有功能强大、负载量大、安全性高、可扩展性强、同时支持B/S与C/S运行模式、开发简单等特性。MateyFrame V5.0由中间层服务端、客户端框架、MateyWeb组件三部分组成,同时支持 Oracle、MSSQL、MySQL数据库。 中间层服务端 采用面向对象方法设计而成,具有稳定性强、安全性高、负载量大、可扩展性强等特性。 采用数据库连接池技术,支持多数据库应用及多种数据库的应用,可以很好的处理断网、数据库重新启动等异常情况,一旦外界环境恢复后,连接池将重新连接数据库,不需要重启服务程序。 使用HTTP协议与客户端进行通信,可以适合企业内网及企业外网等任何网络环境,更适合在Internet网络上运行程序。 服务端支持多种类型的大型数据库一起使用,支持的数据库有:Oracle、MSSQL、MySQL。 服务端采用插件技术开发,系统核心插件可以直接使用,另外用户可轻松地扩展自己需要的服务插件。 服务端采用会话管理技术,为每个客户端会话分配唯一的加密密钥,交互数据在底层进行加密传输,保证了数据在传输过程中的高安全性。 服务端支持多实例运行模式,当客户端用户量大增时,可以适当增加中间层实例,解决大并发量的问题。 服务端插件实现了真三层、伪三层的核心插件,用户可以根据安全级别选用任何一种模式进行应用。 服务端使用Win服务运行模式,重启服务器不需登录系统开启服务程序,服务端即可自动运行。 具有客户端程序发布功能,可以为客户端软件的自动更新服务。 客户端框架 客户端设计成 EXE+BPL+DLL 的文件结构模式,具有扩展性强、易于开发、易于维护、使用简单等特点; 程序框架同时支持B/S、C/S模式,即可以通过客户端运行程序,也可以通过浏览器运行程序,并且支持两种模式同时存在。 使用插件开发模式,业务功能根据实际需要封装在不同的模块 DLL 中,即插即用; 封装了强大的基类,底层数据访问、出错处理、权限控制等; 系统功能根据业务模块信息自动生成,可以手动配置功能菜单列表; 框架中包含用户及权限管理插件,拿来即用,此模块可严格控制各功能Form 的详细权限(添加、修改、删除)、特殊数据的读取权限; 框架中包含了数据字典、系统参数的设置功能,拿来即可用。 框架采用调用时下载相关依赖文件的模式进行程序更新,具有更新文件少、更新速度快等特点; 框架支持程序文件流加载模式,更新的程序文件不需要保存在客户端的机器上,可大大增强程序的安全性。 框架有设计模式与运行模式之分,在设计模式下客户端通过框架功能用SQL可以直接读取到数据库的数据,方便程序开发;但在运行模式中,此功能不可用,这样可以保证数据的安全性。 框架设计了通用的报表设计模块,用户只需简单调,就可以得到自己所需要的报表模板设计,得到功能所需要的报表。 可选用分页数据处理技术,使大批量数据分页返回,分解服务器的压力; 具有负载平衡的功能,当连接的中间层服务器端负载过大或者崩溃时,会自动转向其它可用中间层服务器。 具有断线重连功能,当网络的异常恢复时,系统底层连接会重新连接,不用重启程序就可使用。 框架提供超级查询组件,组件可以根据编号、名称、五笔码、拼音码对需要查询的数据进行快速过滤。 MateyWeb组件 MateyWeb组件是一款能被IE加载运行的ActiveX控件,它是客户端程序在B/S模式下运行的载体。 MateyWeb组件支持WinXP、Win2000、Win2003、Win7、Vista等操作系统。 MateyWeb组件支持IE及以IE为内核的所有浏览器。 应用场合 非常适合开发各种应用于Internet之上的大中型的MIS管理软件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值