随笔 - 809  文章 - 0 评论 - 144 阅读 - 770万

在 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   del88  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2012-12-04 Dbgrideh 表格的行高
2012-12-04 Dbgrideh 字体垂直居中
2011-12-04 去掉MainMenu自动添加的菜单快捷键
点击右上角即可分享
微信分享提示