Po napisaniu mojego programu Delphi Prism na tyle, aby skompilować się i uruchomić w systemie Windows i Linux (mono) bez błędów kompilacji, dowiaduję się, że moje konstruktory i zdarzenia ładowania uruchamiają się w innej kolejności niż się spodziewałem. Pomyślałem, że pliki są wykonywane w kolejności, w jakiej są wymienione w pliku projektu, tak jak w pliku .dpr Delphi. Mówiąc o pliku .dpr, czy istnieje podobny plik dla Delphi Prism, którego nie szukam. Zajrzałem do pliku program.pas i właściwości. Nie widziałem tam niczego, co dałoby mi wskazówkę lub wskazówkę.
Jak upewnić się, że pliki projektu są wykonywane we właściwej kolejności w Delphi Prism?
2 odpowiedzi
.NET nie zna kolejności, w jakiej klasy są wyświetlane w pliku programu. Po prostu widzi zajęcia.
W normalnych okolicznościach możesz pomyśleć o tej zasadzie:
Konstruktory statyczne (klas) są wykonywane bezpośrednio przed pierwszym wywołaniem instancji .ctor lub innej statycznej metody (klas) w tej klasie
Chociaż nie jest to prawdą za każdym razem (można nazwać je wcześniej, ale nie później), jest to dobre przybliżenie, które sprawdza się w większości przypadków.
Tak więc, aby zapewnić określoną kolejność inicjalizacji klasy statycznej, opieram się na następującym: Mam jedną klasę statyczną, która ma metodę Initialize(). Ta metoda jest pierwszą rzeczą, którą wywołuję w metodzie Main() mojego programu. W tej metodzie wywołuję Initialize-Methods na innych klasach w wymaganej kolejności. Daje to pewność, że kod inicjujący zostanie wykonany.
Delphi Prism kompiluje w kolejności, w jakiej pliki są zdefiniowane w projekcie. Jednak nie powinno być niczego, co zależy od kolejności plików, ponieważ nie ma sekcji inicjujących.
Co do twojego drugiego pytania. Program.pas domyślnie zawiera punkt wejścia, jest to metoda o nazwie "Main", możesz to zobaczyć jako główny początek/koniec.
Podobne pytania
Nowe pytania
events
Zdarzenie to sposób na dostarczenie przez klasę powiadomień słuchaczom, gdy wydarzy się określona rzecz.