一、工程文件
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
}
interface
var
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、定義只在本單元才能調用的過程、函數
}
implementation
uses
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
unit Unit2;
interface
var
unit2Var:integer=33;
implementation
end.
歡迎轉載,轉載請注明來源。