delphi 裡 一個單元的initialization 會被執行幾次

del88發表於2024-12-04

在 Delphi 中,一個單元的 initialization 部分在該單元首次被使用時執行一次。具體來說,initialization 部分是在單元的初始化過程中執行的,通常是在以下幾種情況下首次觸發:

  1. 單元被顯式引用:當你在程式碼中使用了某個單元(例如透過 uses 子句)時,如果該單元尚未被載入和初始化,那麼它的 initialization 部分將會被執行。

  2. 程式啟動時自動載入的單元:如果單元是在專案的 .dpr 檔案(專案檔案)中被引用,那麼在程式啟動時,這些單元會自動被載入和初始化,其 initialization 部分也會被執行。

重要的是,initialization 部分只會在該單元首次載入時執行一次。無論該單元在程式中被引用多少次,或者程式中有多少個其他單元引用了它,initialization 部分的程式碼都只會執行一次。

相對應的,還有一個 finalization 部分,它在單元被解除安裝時執行,通常用於清理資源或執行其他收尾工作。finalization 部分同樣只會執行一次,在單位被解除安裝時觸發。

以下是一個簡單的例子來說明這一點:

unit MyUnit;

interface

uses
  SysUtils;

implementation

initialization
  Writeln('MyUnit initialization');

finalization
  Writeln('MyUnit finalization');

end.

如果你在不同的單元或者程式檔案中引用 MyUnit,你會發現 MyUnit initialization 只會輸出一次,即首次載入該單元時。同樣地,MyUnit finalization 也只會在程式結束時執行一次。

相關文章