在 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 也只会在程序结束时执行一次。

posted on 2024-12-04 04:20  del88  阅读(137)  评论(0)    收藏  举报