Domanda

Having written my Delphi Prism program enough to compile and run on Window and Linux (mono) without compilation errors, I am finding out that my constructors and load events are firing at different order than I expected. I thought, files get executed in the order that they are listed in the project file like in Delphi .dpr file. Speaking of .dpr file, is there a similar file for Delphi Prism that I am not looking into. I looked into program.pas file and properties. I didn't see anything there to give me a hint or clue.

How do you make sure that the project files get executed in right order in Delphi Prism?

È stato utile?

Soluzione

.NET does not know about the order your classes are listed in your program file. It just sees classes.

Under normal circumstances you could think of this rule:

Static (class) constructors are executed immediately before the instance .ctor or another static (class) method is called on this class for the first time

While this is not true every time (they could be called earlier, but not later), this is a good approximation which works out most of the time.

So to ensure a certain order for static class initialization, I rely on the following: I have one static class that has an Initialize() method. This method is the first thing I call in the Main() method of my program. In this method I call Initialize-Methods on other classes in the required order. This makes sure, that the initialization code is executed.

Altri suggerimenti

Delphi Prism compiles in the order the files are defined in the project. However, there should not be anything that depends on the order of the files as there are no initialization sections.

As for your other question. Program.pas by default contains the entry point, it's a method called "Main", you could see this as the main begin/end.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top