在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
概要介绍: 一:Program 单元 下面列出一个典型的Program单元: Program Project1; {$R *.RES} Begin Program单元由以下几个部分组成: 程序首部,由保留字Program后跟一个程序名组成,上例中是Project1。程序首部也可以带有参数, 引用部分,由保留字Uses加要引用的单元名组成,上例中有两个,分别是Forms单元和Unit1单元, 编译指令,上例中,只有一个编译指令{$R *.RES},编译指令也是可选的。 执行部分也称初始化部分,由保留字Begin和End括起来的一段代码。 注意:用Delphi开发程序,除了一些特殊需要,如检查第二个实例是否运行,一般很少需要手工修改Program单元,因为Delphi能够自动建立和 维护这个单元,例如当您开始一个新的工种的时候,Delphi自动建立一个Program单元和一个子程序单元。当您向工程中加入了一个新的Form或 Unit,或者使用Project|Option…子命令修改了程序名,program单元将自动更新。
首部 1:单元首部 Unit Unit1; 注意:单元首部也是一个完整的语句,因此单元名后应当跟分号,另外单元名必须符合Object Pascal关于标识符的规则,并且在同一个工程中单元名必须是唯一的。 当您保存文件时,您使用的保存文件名,将自动反映到这个部分。而且也会加到程序单元的USES部分中。因此,如果您工程中提示某文件缺失,你可以检查一下 这个文件的路径和名称是否改动过。DELPHI工程的文件是不必放在同一目录下的(但是我建议您这么做,便于管理)。
在Interface部分声明的引用单元、常量、类型、变量、过程和函数对整个程序是公共的,也就是对所有引用该单元的单元来说,这些声明都是可见的、可 访问的,例如引用该单元的单元就可以调用在Interface声明的过程和函数。Interface部分相当于类类型的Public部分。 Interface部分从保留字Interface开始到保留字Implementation前结束。 在Interface部分,过程和函数只需写出它们的首部,具体的定义是在下面的Implementation(实现部分)给出的。 Interface部分本身又可以由几个可选的部分组成,分别是单元引用部分(Uses)、常量声明部分、类型声明部分、变量声明部分、过程和函数声明部分。 单元引用部分(uses)用于列出该单元要引用的标准单元和其它单元。单元引用的概念有点类似于C语言中的INCLUDE,用于把外部的已声明过的常量、 类型、变量、过程或函数引入到本单元中使用,其中标准单元是指Object Pascal预定义好的单元,例如Windows单元、SysUtils单元、Forms单元等,您也可以把其它非标准单元加到Uses,这样该单元也就 能引用这些单元中的常量、类型、变量过程和函数等。当您往一个表单上加入控件时,该控件的单元将自动加到该部分,如果你还看不到,存盘就可以看到了。 下面是一个示例: Unit Unit1; Implementation {$R *.DFM} 这是一个典型的Delphi自动生成的单元,它仅给出这个表单的结构。在Uses部分,引入了Windows,Messages,SysUtils,Classes,Graphics等单元,这样就可以直接调用这些单元中的例程,而无需加入单元引用名。例如: 而不需要这么写: 尽管这个例程是在Windows单元中声明的。 上例中,引用的单元都是标准单元,其中有的标准单元几乎是所有的单元都要用到的,因此Delphi自动把这些加到您的单元的Uses 部分,不过一些不太常用的单元,如果您的程序中要引用,您就必须自已手工把它们加到Uses部分。例如,在程序如果你需要使用sndPlaySound函 数来播放一个WAV文件,而这个函数是在mmsystem单元中声明的,因此,你需要在Uses 部分加入mmsystem,记得在加入在分号之前,与其他单元用逗号隔开。 加入到Uses单元的顺序一般是无关紧要的,但是有的单元如ShareMem单元必须放在第一个。
Implementation部分的另一大块是在Interface部分声明的过程和函数的定义,程序示例如下: Unit Unit1; Implementation {$R *.DFM}
Initialization部分由保留字Initialization加一些语句构成,语句可以是单个语句,也可以是复合语句,如果是复合语句,应当用Begin和End括起来。 如果有多个单元含有Initialization部分,它们的执行顺序和这些单元在Program单元的Uses 部分出现的顺序是一致的。
如果有多个单元含有Finalization部分,它们的执行顺序跟Initialization执行的顺序正好相反。 注意:Finalization部分的代码应当能考虑到这样一种情况,就是单元的Initialization部分在执行过程中可能会被意外终止,也就是说可能会出现这么一种情况,就是有些指针的值是nil,那么在相应地终止,应当避免出现对这些指针的引用。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论