От чего зависит порядок компиляции или выполнения исходного файла в Delphi Prism? - PullRequest
0 голосов
/ 12 августа 2011

Написав мою программу Delphi Prism достаточно для компиляции и запуска в Window и Linux (mono) без ошибок компиляции, я обнаружил, что мои конструкторы и события загрузки запускаются в другом порядке, чем я ожидал. Я думал, что файлы выполняются в том порядке, в котором они перечислены в файле проекта, как в файле .dpr Delphi. Говоря о файле .dpr, есть ли подобный файл для Delphi Prism, который я не рассматриваю. Я посмотрел в файл program.pas и свойства. Я ничего не видел там, чтобы дать мне подсказку или подсказку.

Как убедиться, что файлы проекта выполняются в правильном порядке в Delphi Prism?

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Delphi Prism компилируется в порядке, указанном в проекте.Однако не должно быть ничего, что зависит от порядка файлов, поскольку нет разделов инициализации.

Что касается вашего другого вопроса.Program.pas по умолчанию содержит точку входа, это метод под названием «Main», вы можете видеть это как начало / конец.

1 голос
/ 12 августа 2011

.NET не знает, в каком порядке ваши классы перечислены в вашем программном файле. Он просто видит классы.

В обычных условиях вы можете подумать об этом правиле:

Статические (класс) конструкторы выполняются непосредственно перед первым вызовом экземпляра .ctor или другого статического (класс) метода для этого класса

Хотя это не всегда так (они могут вызываться раньше, но не позже), это хорошее приближение, которое срабатывает большую часть времени.

Поэтому, чтобы обеспечить определенный порядок инициализации статического класса, я полагаюсь на следующее: У меня есть один статический класс, который имеет метод Initialize (). Этот метод - первое, что я вызываю в методе Main () моей программы. В этом методе я вызываю Initialize-Methods для других классов в требуемом порядке. Это гарантирует, что код инициализации выполнен.

...