2009年5月28日

Delphi Unit 的結構

Delphi Unit 最簡單的結構如下

unit{ 單元開頭 } Unit1;

interface
{ 介面區 }

implementation
{ 實作區 }

end{ 單元結尾 }.

unit 為單元開頭,以 end. 為單元結尾,code寫在這兩行之中。
主要分為二節區,interfaceimplementation
  1. interface 區為對外公開的宣告
  2. implementation 區為不對外開放的實作 code 以及interface 區的實作 code
另外還有二個節區,initializationfinalization
  1. initialization 區為此 unit 初始化時執行的 code
  2. finalization 區為程式結束時執行的 code,主要目的是釋放 initialization 區所建立的資源

unit{ 單元開頭 } Unit1;

interface

{ 介面區 }


implementation

{ 實作區 }

initialization
{ 初始區 }

finalization
{ 結束區 }

end{ 單元結尾 }.


interfaceimplementation 區中,可以有一個 uses 來使用其它 unit 的資源,以 interface 中的 uses 為宣告中所要用到的資源,implementation 中的 uses 則是在實作時所要用到的資源,且未出現在 interface 中的 uses內。

unit Unit1;

interface

uses
Classes;

implementation

uses
Variants;

initialization

finalization

end.


interfaceimplementation 區中,在 uses 之後,可以有多個 const, resourcestring, type, var

unit Unit1;

interface

uses
Classes;

{… const, resourcestring, type, var …}

implementation

uses
SysUtils;

const { 常數 }
PI_SQUARE = PI * PI;

resourcestring { 資源字串 }
RS_ProductName = 'ProductName';

type { 定義 }
TMyClass = TObject;

var { 變數 }
Strings: TStrings;

initialization
Strings := TStringList.Create; { 建立 Strings }

finalization
FreeAndNil(Strings); { 釋放 Strings }

end.


interface區中, 宣告對外公開的 procedurefunction
implementation 區中,實作procedurefunction

unit Unit1;

interface

uses
Classes;

{… const, resourcestring, type, var …}

procedure AddString(s: String);
function GetPI_SQUARE: Double;

implementation

uses
SysUtils;

const { 常數 }
PI_SQUARE = PI * PI;

resourcestring { 資源字串 }
RS_ProductName = 'ProductName';

type { 定義 }
TMyClass = TObject;

var { 變數 }
Strings: TStrings;

procedure AddString(s: String);
begin
Strings.Add(s);
end;

function GetPI_SQUARE: Double;
begin
Result := PI_SQUARE;
end;

initialization
Strings := TStringList.Create; { 建立 Strings }

finalization
FreeAndNil(Strings); { 釋放 Strings }

end.

沒有留言:

網誌存檔