在Delphi中,initialization和finalization是单元文件中的两个特殊代码块,用于控制单元的初始化和清理过程。以下是关键点总结:
1、执行时机与次数
initialization代码块会在单元首次被加载时执行一次,无论该单元被多少其他单元引用。触发场景包括:显式引用(如uses子句)或程序启动时自动加载(如项目文件.dpr中引用的单元)。
finalization代码块在单元卸载时执行(程序正常退出时),且执行顺序与initialization相反。
2、执行顺序
程序启动时,所有单元的initialization按uses子句中的顺序依次执行。
主程序运行后,窗体构造函数和OnCreate事件触发。
程序退出时,finalization按initialization的逆序执行。
3、典型用法
initialization用于变量初始化、资源预加载等,优先级高于Application.Initialize。
finalization用于释放动态分配的资源(如内存、对象)。
4、示例
若工程包含Form1、Form2、Form3:
启动时:Form1→Form2→Form3的initialization和OnCreate顺序执行。
退出时:Form3→Form2→Form1的OnDestroy和finalization逆序执行。
5、注意事项
避免循环引用,否则会导致编译错误。
推荐通过构造函数/析构函数替代initialization/finalization,但Delphi源码仍广泛使用这两者
1106

被折叠的 条评论
为什么被折叠?



