1. 程式人生 > 實用技巧 >Delphi基礎教程圖文版之單元檔案結構

Delphi基礎教程圖文版之單元檔案結構

寫完開篇之後考慮很久先寫什麼,Delphi是以單元(unit)作為它的程式組成,單元檔案的字尾名為 .pas 想來想去還是從單元檔案開始說起

我們在官方文件可以看到如下的描述

  • 將大型程式劃分為可以單獨編輯的模組。
  • 建立可以在程式之間共享的庫。
  • 在不提供原始碼的情況下將庫分發給其他開發人員。

一個完整的,可執行的Delphi應用程式由多個單元模組組成,所有這些模組都由一個稱為專案檔案的原始碼模組捆綁在一起。專案檔案的字尾名為 .dpr

官方文件:http://docwiki.embarcadero.com/RADStudio/Sydney/en/Programs_and_Units_(Delphi)

結構和語法-.dpr

手動新建一個 VCL Application 通過下圖的方式可以看到程式最開始的原始碼

其程式碼如下:

program Project1;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

可執行的Delphi應用程式的原始碼檔案包含:

(1)program 宣告:預設情況下采用的就是當前的專案名稱

(2)uses 語句宣告:use子句由關鍵字use組成,後跟一個逗號分隔的專案檔案直接依賴的單位列表

(3)可執行語句塊

begin
  .
  .
  .
end.

其組成語句只是對專案的Application物件的方法呼叫。 大多數專案都有一個全域性Application變數,該變數包含Vcl.Forms.TApplication,Web.WebBroker.TWebApplication或Vcl.SvcMgr.TServiceApplication的例項(物件)。

該塊還可以包含常量,型別,變數,過程和函式的宣告; 這些宣告必須在塊的語句部分之前。

注意,代表程式源結尾的結尾必須後面帶有英文狀態句號

通過上文可以看出,Delphi程式確實是通過 .dpr 檔案進行組織,其中 .pas 即為建立程式時通過專案建立嚮導並自動引入。將來自己手動建立的普通單元檔案如果想成功的使用依然需要在此處進行引入

結構和語法-.pas

以這種字尾名結尾的檔案即為普通的單元檔案,這個也是使用頻率最高的一種檔案型別。

建立方式也很簡單,可以通過IDE頂部選單的**File-->New-->Unit **的方式建立,也可以通過下圖的方式建立

一個單元由型別(包括類),常量,變數和例程(函式和過程)組成。

單元檔案以 unit 開頭,後跟interface關鍵字。 在interface關鍵字之後,uses子句指定了單元依賴性列表。 接下來是實現部分implementation,然後是可選的初始化initialization 和完成部分finalization 。 單元原始檔如下所示:

unit Unit1;

interface

uses // 依賴清單,或者稱為引入的其他單元清單,一般引入系統單元
  // 宣告部分

implementation

uses // 依賴清單,或者稱為引入的其他單元清單。一般引入自定義單元,可避免互相引用

// 類、方法、過程和函式的實現在這裡...

initialization

//初始化部分
// 程式啟動時先執行,並順序執行。一個單元的初始化程式碼執行之前,就運行了它使用的每一個單元的初始化部分


finalization

// 結束化部分,程式結束時執行

end.

Interface 部分

(1)介面部分宣告常量、型別、變數、過程和函式,這些宣告對引用單元就像自己的宣告一樣

(2)在介面部分宣告的過程和函式,就像使用了forward關鍵字(一般稱為前置宣告)

(3)介面部分可以包含其自己的uses子句,該語句必須立即出現在關鍵字interface之後。

Implementation 部分

(1)如果包含uses字句,必須緊跟關鍵字implementation

(2)在這裡實現interface中定義的過程和函式,可以任意順序的定義和呼叫.

(3)可以定義單元私有的常量、型別(包括類)、變數、過程和函式,但這些對引用單元的客戶是不可見的

Initialization 部分

Initialization是可選的。 它從保留字初始化開始,一直持續到finalization 的開始,如果沒有 finalization 部分,則一直持續到單元結束。 Initialization 部分包含在程式啟動時按照它們出現的順序執行的語句。

在其他單元中引用的話單元的初始化部分將按照其在uses語句中出現的順序執行。

Finalization 部分

finalization部分是可選的,並且只能在具有Initialization部分的單元中使用。 finalization部分從保留字終結開始,一直持續到單元結束。 它包含在主程式終止時執行的語句(除非使用Halt程式終止程式)。 使用finalization部分釋放在Initialization部分中分配的資源。

finalization部分的執行順序與Initialization部分相反。 例如,如果在應用程式以該順序初始化單元A、B和C,它將以C、B和A的順序完成它們的釋放。