一、工程文件
program MultiUnit;{$APPTYPE CONSOLE}uses SysUtils, Unit1 in 'Unit1.pas';begin //引用unit1中的变量,因为是在接口部分定义所以可以引用 strGreet:='Hello world'; //调用unit1中的过程 因为是在接口部分定义所以可以引用 Greeting(strGreet); //调用unit2中的函数;因为是在接口部分定义所以可以引用 nAdd:=10; nAddfactor:=11; writeln(GetSum(nadd,naddfactor)); { 1、因为pai变量是在unit1单元的实现部分定义的,因此不能被工程文件引用 } //writeln(10*10*pai); { 1、 因function GetArea(var r:single):single; 是在unit1单元的实现部分定义的 所以在工程文件中也不能访问 } //writeln(GetArea(3.0)); { 1、 因为没有在工程文件中引用unit2单元,所以不能引用unit2单元的对象 2、 虽然在unit1单元引用了unit2单元,但是是在实现部分,所以在工程文件中 也不能引用unit2单元的对象。 3、 如果在unit1单元的接口部分引用了unit2单元,则在工程文件中也能引用unit2 单元文件的对象 } //showUnit2(); readln;end.
二、单元文件 unit1
{ 单元文件1、Delphi程序由称为单元的源代码模块构成2、每个单元保存在一个单独的单元文件 *.pas 文件中,分别进行编译,然后编译后的 单元被链接到程序中3、单元文件由以下几部分组成: 单元头 unit 关键字表示 接口部分 interface 关键字表示 实现部分 implementation 关键字表示 初始化部分 initialization 关键字表示 结束化部分 finalization 单元的结尾 end. 表示}{ 单元头1、 unit关键字定义单元头,2、 语法格式为: unit 单元标识符3、 在其他单元中利用 单元标识符 来表示整个单元}unit Unit1;{ 接口部分1、 接口部分定义其他单元引用本单元时可以访问本单元那些对象, 接口部分声明的变量、函数、过程的作用域 类似于C语言的全局对象2、 接口部分由关键字 interface 开始,直到遇到关键字 implementation 结束3、 接口部分可以 A、使用 uses 子句, uses子句必须紧跟在interface之后 B、利用 var 关键字定义变量 C、声明可以被其他单元调用的过程 procedure 和 函数 function}interfacevar strGreet:string; nAdd:integer; nAddFactor:integer;{ 过程1、 通过关键字 procedure 定义和声明过程2、 注意声明最后有一个分号3、 以后具体介绍}procedure Greeting(var strGreet:string);{ 函数1、 通过关键字 function 定义和声明过程2、 注意声明最后有一个分号3、 以后具体介绍}function GetSum(var value1,value2:integer):integer;{ 实现部分1、 实现部分用来实现单元的代码部分,实现部分主要的代码编辑部分2、 实现部分用来定义接口部分声明的过程、函数3、 实现部分利用关键字 implementation 表示开始,直到遇到关键字 initialization 或者 end. 为止4、 实现部分可以使用 A、uses 子句, 如果使用uses子句,则必须紧跟implementation关键字 B、var 语句定义变量 C、定义在接口部分声明的过程、函数 D、定义只在本单元才能调用的过程、函数}implementationuses unit2;var pai:single=3.1415926;{ 过程1、 定义过程的时候必须与在接口部分完全一样,如果声明用来 var 关键字,则在 定义的时候必须用 var 关键字}procedure Greeting(var strGreet:string) ;begin writeln(strGreet);end;{ 函数1、函数通过函数名返回函数值}function GetSum(var value1,value2:integer):integer;begin GetSum:=value1 + value2;end;function GetArea(var r:single):single;begin GetArea := pai * r * r;end;procedure showUnit2();begin { 1、引用了unit2单元,所以可以引用unit2单元的对象 } writeln(unit2Var);end;end.
三、单元文件 unit2
欢迎转载,转载请注明来源。
联系客服