單元(Unit)亦可包含 initialization(初始化區段) 與 finalization(收尾區段)。
這兩段程式碼會分別於程式啟動、程式結束時自動執行。
initialization:程式啟動、單元載入記憶體時執行,執行時機早於主程式;多個單元會依照參考順序依序執行各自的初始化區段。
finalization:程式正常關閉、程序銷毀前執行;執行順序與初始化相反。
用途
Initialization:註冊類別、開啟全域檔案 / 資料庫連線、初始化全域變數、註冊元件;
Finalization:釋放記憶體、關閉控制代碼、儲存設定、註銷已註冊資源,避免記憶體洩漏。
我們修改上一堂課的單元pas檔案:MyUnit.pas
unit MyUnit;
{$ifdef FPC}
{$mode objfpc}{$H+}{$J-}
{$endif}
interface
procedure MyProcedure(const A: Integer);
function MyFunction(const S: string): string;
implementation
procedure MyProcedure(const A: Integer);
begin
WriteLn('A + 10 is: ', A + 10);
end;
function MyFunction(const S: string): string;
begin
Result := S + 'strings are automatically managed';
end;
// 初始化區段:程式載入本單元時自動執行
initialization
WriteLn('Hello world!');
// 收尾區段:程式正常結束前自動執行
finalization
WriteLn('Goodbye world!');
end.Code language: JavaScript (javascript)
僅在檔案底部新增上述兩個區段

執行結果

最後的 Goodbye world 會在按下Enter(程式即將結束)後才會執行。
Previous: 單元與程式檔副檔名總整理
Next: 單元間互相參照