0

在编写了足以在 Window 和 Linux(单声道)上编译和运行而没有编译错误的 Delphi Prism 程序之后,我发现我的构造函数和加载事件的触发顺序与我预期的不同。我想,文件按照它们在项目文件中列出的顺序执行,就像在 Delphi .dpr 文件中一样。说到 .dpr 文件,是否有类似的 Delphi Prism 文件我没有研究。我查看了 program.pas 文件和属性。我没有看到任何可以给我提示或线索的东西。

您如何确保项目文件在 Delphi Prism 中以正确的顺序执行?

4

2 回答 2

2

Delphi Prism 按照文件在项目中定义的顺序进行编译。但是,不应该有任何依赖于文件顺序的东西,因为没有初始化部分。

至于你的另一个问题。Program.pas 默认包含入口点,它是一个名为“Main”的方法,您可以将其视为主要的开始/结束。

于 2011-08-11T21:11:43.560 回答
1

.NET 不知道您的类在程序文件中的列出顺序。它只看到类。

一般情况下你可以想到这个规则:

静态(类)构造函数在实例 .ctor 或其他静态(类)方法第一次在此类上调用之前立即执行

虽然并非每次都如此(它们可以更早调用,但不能更晚调用),但这是一个很好的近似值,在大多数情况下都有效。

因此,为了确保静态类初始化的特定顺序,我依赖以下内容:我有一个具有 Initialize() 方法的静态类。这个方法是我在程序的 Main() 方法中调用的第一件事。在这个方法中,我按要求的顺序在其他类上调用 Initialize-Methods。这确保了初始化代码被执行。

于 2011-08-12T07:33:08.990 回答