Ok, dankesehr.
wieder was dazugelernt
Dann werde ich vielleicht mal einige meiner Klassen überarbeiten wo ich das im Moment in einer globalen Instanz per Getter mache.
Eigentlich bin ich kein Freund von solchen "Compiler" Magics, zumal dadurch womöglich die initialisation Phase immer länger werden könnte, was bei Mobile u.U. sehr schädlich sein kann.
Ich habe mich mit dem Thema aber noch nicht wirklich tiefer auseinandergesetzt.
Hier ist wohl der passende Doku-Abschnitt dazu:
http://docwiki.embarcadero.com/RADSt...le/de/Methoden
Wenn ich die Instanz per Getter-Funktion erzeuge habe ich zumindest die Kontrolle darüber wann das genau passiert (eben dann wenn ich es wirklich brauche, oder eben auch niemals).
Zitat:
In diesem Beispiel überprüft der Compiler, ob TBox tatsächlich in der Anwendung verwendet wird. Falls ja, wird automatisch ein Aufruf des Klassenkonstruktors dem initialization-Abschnitt der
Unit hinzugefügt.
Hinweis: In der Regel sorgt der Compiler für die richtige Reihenfolge der Initialisierung von Klassen, in einigen komplexen Szenarien könnte die Reihenfolge aber zufällig werden. Und zwar dann, wenn der Klassenkonstruktor einer Klasse vom Status einer anderen Klasse abhängig ist, der wiederum von der ersten Klasse abhängt.
Hinweis: Der Klassenkonstruktor für eine generische Klasse oder einen Record kann mehrfach ausgeführt werden. Die genaue Anzahl der Ausführungen des Klassenkonstruktors hängt in diesem Fall von der Anzahl der spezialisierten Versionen des generischen Typs ab. Der Klassenkonstruktor für eine spezialisierte TList<String>-Klasse kann beispielsweise mehrfach in derselben Anwendung ausgeführt werden.
Ich vermute mal das diese "versteckte" initialisierung, so wie es im Text oben steht,
IMMER bei Verwendung mit reingelinkt werden, und damit auch IMMER ausgeführt.
Also egal ob die Klasse wirklich in einer Session benutzt wird, oder nicht.
Ausserdem sthat da das die Reihenfolge gehen sollte, aber nicht muss.
Während eine Getter-Funktion erst dann aufgerufen wird wenn der User die Klasse wirklich braucht.
Ich sehe immer noch ein paar Vorteile der Getter-Funktion, oder täusche ich mich da und die class constructoren sind womöglich cleverer als ich dachte ?
Rollo