0

コンパイルエラーなしでWindowとLinux(モノ)でコンパイルして実行するのに十分なDelphi Prismプログラムを書いたので、私のコンストラクタとロードイベントが期待したものと違う順序で起動していることがわかりました。私は、ファイルがDelphiの.dprファイルのようにプロジェクトファイルにリストされている順序で実行されると思っていました。 .dprファイルについて言えば、私が検討していないDelphi Prismのための同様のファイルがあります。私はprogram.pasファイルとプロパティを調べました。私はヒントやヒントを与えるために何も見なかった。Delphi Prismでのソースファイルの合併または実行の順序を決定する要因は何ですか?

プロジェクトファイルがDelphi Prismで正しい順序で実行されるようにするにはどうすればよいですか?

答えて

1

.NETは、あなたのクラスがあなたのプログラムファイルにリストされている順番を知りません。それはクラスを見るだけです。このルールを考えることができ、通常の状況下では

静的(クラス)のコンストラクタは、初めてこのクラスで呼び出されるインスタンス.ctorまたは他の静的(クラス)メソッドの直前に実行されている

これは毎回真実ではありませんが(と早く呼び出すことができますが、後では呼び出すことはできません)、これはほとんどの場合有効です。

静的なクラスの初期化を確実にするために、私は次のものを使用します。 Initialize()メソッドを持つ静的クラスが1つあります。このメソッドは、私のプログラムのMain()メソッドで最初に呼び出すものです。このメソッドでは、他のクラスのInitialize-Methodsを必要な順序で呼び出します。これにより、初期化コードが実行されることが確認されます。

2

Delphi Prismは、ファイルがプロジェクト内で定義された順序でコンパイルします。ただし、初期化セクションがないため、ファイルの順序に依存するものはありません。

その他のご質問はありません。 Program.pasにはデフォルトでエントリーポイントが含まれています。これは "Main"というメソッドです。これをメインのbegin/endとして見ることができます。

関連する問題