星辰日月00

欲多则心散,心散则志衰,志衰则思不达也!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Unit structure and syntax(单元的结构和语法)

Unit structure and syntax: Overview(概述)
一个单元由类型(包括类)、常量、变量以及例程(函数和过程)构成,每个单元由它自己的单元文
件(.pas)定义。
一个单元以单元头(unit heading)开始,后面跟interface、implementation、initialization
和finalization 部分,后面两个部分是可选的。一个单元的基本结构看起来这样:
unit Unit1;
interface
Programs and units
- 11 -
uses { 这里是单元列表 }
{ 这里是接口部分 }
implementation
uses { 这里是单元列表 }
{ 这里是实现部分 }
initialization
{ 这里是初始化部分 }
finalization
{ 这里是结束化部分 }
end.
单元必须以end 后跟一个句点结束(end.)。

The unit heading(单元头)
单元头指定单元的名称。它以关键字unit 开始,后面跟一个有效标志符(指定单元名),并以分号
结束。使用Borland 工具创建的程序,标志符必须和单元文件名相同。所以,单元头
unit MainForm;
必须出现在源文件MAINFORM.pas 中,编译后的单元文件将是MAINFORM.dcu。
在一个工程中,单元名必须是独一无二的,两个同名的单元不能用在同一个程序中,即使它们的单
元文件位于不同的路径下。

The interface section(接口部分)
单元的接口部分从关键字interface 开始,直到实现部分的开头。接口部分声明常量、类型、变
量、过程和函数,所有这些对单元的客户(也就是引用此单元的程序或其它单元)是可用的。在接口部
分声明的实体被称为‘公用’的,因为它们对客户来说,就像自己声明的一样。
在接口部分声明的过程或函数只是一个例程头,它们的代码块(block)在实现部分定义。所以,在
接口部分声明过程和函数就像使用forward 指示字,虽然这里它并没有出现。
在接口部分声明一个类时,必须包含它的所有成员。
接口部分可以包含自己的uses 子句,它必须紧跟在关键字interface 之后。关于uses 子句,请参考
单元引用和uses 子句。

The implementation section(实现部分)
单元的实现部分从关键字implementation 开始,直到初始化部分的开头;或者,如果没有初始
化部分的话,就直到单元的结束。实现部分定义接口部分声明的过程和函数,在这里,你能以任何顺序
定义和调用它们。并且,你也可以省略过程和函数的参数列表,但如果包括它们的话,就必须和在接口
部分的声明完全相同。
除了定义公用的过程和函数,实现部分可以定义单元的私有内容,包括常量、类型(包括类)、变量、
过程和函数,它们对客户(请参考接口部分)是不可见的。
实现部分可以包含自己的uses 子句,它必须紧跟在关键字implementation 之后。关于uses 子
句,请参考单元引用和uses 子句。

The initialization section(初始化部分)
初始化部分是可选的。它从关键字initialization 开始,直到结束化部分的开头;或者,如果没
有结束化部分的话,就直到单元的结束。初始化部分所包含的命令,将在程序启动时按它们出现的顺序
开始执行。举例来说,如果你定义了需要初始化的结构,你可以在初始化部分来完成。
对于一个单元(称为客户)引用的各个单元,它们的初始化将按客户单元中uses 子句引用它们的顺
序开始执行。(也就是说,uses 子句中列在前面的单元先初始化)

The finalization section(结束化部分)
结束化部分是可选的,并且只有当一个单元具有初始化部分时才能包含它。结束化部分从关键字
finalization 开始,直到单元的结束。结束化部分所包含的命令,将在主程序结束时被执行。使用结
束化部分来释放在初始化部分分配的资源。
结束化部分的执行顺序和初始化执行的顺序相反。例如,如果你的程序以A、B、C 的顺序进行初
始化,结束化时的顺序则是C、B、A。
只要初始化部分的代码开始执行,在程序结束时相应的结束化部分就一定要执行。因此,结束化部
分必须能够处理没有完全初始化的数据,因为,如果发生运行时错误,初始化部分的代码可能没有完全
执行。

posted on 2012-01-30 18:55  星辰日月00  阅读(160)  评论(0编辑  收藏  举报