Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#8

AW: [Fmx] TTimeSpan richtig benutzen ?

  Alt 18. Jan 2017, 11:56
Die Class-Constructor aller "verwendeten" Klassen werden vom Delphi immer vor dem Initialization aufgerufen
und die Class-Destructor dementsprechend nach dem Finalization.

Also in Initialization und Finalization sind immer alle Klassen lokalen Klassen initialisiert. (jene, welche auch im Programm einkompiliert gelinkt wurden)

Alle Units in der Interface-Uses-Klausel sind auch immer initialisiert, wenn man sie irgendwo in der eigenen Unit verwendet.
Darum sollte man besser Units immer im Interface einbinden und nur problematische Kreuzverlinkungen in der Implementation.

Die Units in einer Implementation-Uses-Klausel können in Class-Controtor und Initialization uninitialisiert sein, aber im laufenden Programmcode sind die dann auch immer initialisiert.


Vorteil/Nachteil: Initialisierung im Initialisation-Block bindet immer alle da aufgerufenen Klassen ins Programm ein.
Und bei Initialisierung im Class-Constuctor, da kann der Compiler Linker die ganze Klasse weglassen, wenn sie nachher nirgendwo im Programm verwendet wurden.


Pssst, mit FMX/VCL hat das eigentlich nichts zu tun ... gehört eher zur RTL.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (18. Jan 2017 um 12:01 Uhr)
  Mit Zitat antworten Zitat