一、工程文件
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.
歡迎轉載,轉載請注明來源。