Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

Re: unit initialisieren

  Alt 12. Mai 2010, 17:45
Zitat von jaenicke:
Was macht denn Lazarus da so anders als Delphi?
Weiss nicht so genau, aber eigentlich ist es auch egal.
Denn:
1.) es sind wahrscheinlich noch Initialization-Abschnitte anderer Units vorhanden, die noch nicht ausgeführt wurden
2.) die Reihenfolge in der die Initialization-Abschnitte ausgeführt werden lässt sich nicht zuverlässig und stabil bestimmen.
Man kann schon Einfluss nehmen über die Projektdatei aber das ist nicht zuverlässig;
man kann jederzeit aus Unachtsamkeit oder Unwissenheit die Reihenfolge ändern
3.) Application.Initialize wurde noch nicht aufgerufen


Daraus lassen sich folgende Schlüsse ziehen:
a.) man darf sich niemals darauf verlassen, dass andere Units schon initialisiert sind
b.) man darf im Initialization-Abschnitt nur Dinge tun, die keinerlei Nebenwirkungen haben
erlaubt wäre z.B. Zufallsgenerator mit Startwert belegen, Array mit Sinuswerten vorab berechnen
nicht erlaubt sind z.B. Aktionen, die in irgeneiner Art mit dem Benutzer in Kontakt treten
oder Code der potentiell eine Exception auslösen kann
c.) man sollte den Initialization-Abschnitt so gut wie möglich vermeiden, denn er kann nur mit globalen Variablen und globalen Resourcen arbeiten.
Andreas
  Mit Zitat antworten Zitat