![]() |
Verständnisfrage zu Unit: Initialization und Finalization
Hallo,
ich bin grad am Überlegen, "wie oft" die Initialization und Finalization einer Unit aufgerufen wird. Meine Unit steht in verschiedenen Forms und nimmt auch Anpassungen an Application.Irgendwas und den Screen.Cursors vor. Ich möchte natürlich Overhead vermeiden... Ein einfacher "Beep"-Test bei dem ich ein Beep in der Initialization eingebaut hatte brachte nur "ein Beep" (Zitat "Geben Sie mir ein Ping" ;). Was sagt Ihr? Gruß + Danke Winkel79 |
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
Initialization und finalization werden bei Programmstart respektive Programmende genau einmal aufgerufen. Die Reihenfolge hat Delphi beim Kompilieren ausgerechnet.
|
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
Hallo und Danke Robert,
Zitat:
Zitat:
Zur Erklärung: Ich habe alle Kompatibilitätsfunktionen in eine Unit gepackt. Hier werden per Initialization die OS-Bedingungen abgefragt, die eigene Dateiversion ausgelesen, Cursor und Hints/Tooltips an Vista angepasst, VistaAltFix und TaskBarFix etc.pp. Zusätzlich enthält die Unit Basisfunktionen, wie z.B. ein Ansi/Unicode-ShellExecuteAndWait etc. Ich möchte natürlich, daß die Anpassungen und der VistaAltFix nur einmal instanziert werden - auch um Zeit und Ressourcen zu sparen. Ich bin jetzt schon mal mit dem SamplingProfiler (1.4.irgendwas) rangegangen, aber weiß auf die schnelle nicht, wie man das gescheit prüfen könnte. Gruß winkel79 |
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
Zitat:
Die Reihenfolge bestimmt sich aus der Reihenfolge, in der die Units im Projekt verwendet werden. Wenn z.B. die Anwendung Form 1 und Form verwendet, und Form1 verwendet Unit1 und Unit2 und Form 2 verwendet Unit1 und Unit3, dann ist die Reihenfolge entsprechend: Unit1 (aus Form1 inkludiert), Unit2 (aus Form1 inkludiert), Form1 (erst jetzt, weil ja schon Initialized-Objekte aus Unit1 und Unit2 benutzt werden könnten), Unit3 (aus Form2 inkludiert), Form2 - das jetzt auch auf Initialisierte Objekte der Units 1 und 3 zugreifen kann. |
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
Nur genau einmal. Wie oft die Unit im Programm verwendet wird hat damit nichts zu tun.
Beim Programmstart werden die initialization Sections der Reihe nach abgearbeitet (entsprechend die finalization Sections beim Programmende). Welche Unit welche andere Unit verwendet beeinflusst nur die Reihenfolge der Abarbeitung. Das wird zur Kompilationszeit entschieden (es ist vollstaendig entscheidbar). Bei Programmausfuehrung ist die Reihenfolge also immer gleich. Forms sind normale Objekte, die sowieso erst nach Ende der Initializaton erstellt werden koennen.Erst dann kommt der Code im .dpr dran. |
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
Phoenix, genau das sage ich ja. es wird beim Kompilieren des EXEs ausgerechnet (im Rahmen der Codegenerierung) wie die Reihenfolge zu sein hat.
|
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
Das ist zwar sehr informativ, aber um die Frage kürzer (einfacher) zu machen:
Wir der Initialization-Teil einer Unit nur -genau einmal- ausgeführt unabhängig davon, ob andere Units und/oder Forms diese Unit ebenfalls verwenden? Dann versteh ich die Antwort auch, ohne einen weiteren Kaffee ;) Danke :zwinker: Gruß winkel79 |
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
JA!
|
Re: Verständnisfrage zu Unit: Initialization und Finalizatio
Zitat:
:dp: Gruß winkel79 Edit: Nun ist der Groschen gefallen. Wobei dies eher die Funktionsweise bzw. "Intelligenz" des Compilers beschreibt. Ich fand nur, daß die Delphi OH sich - wie so oft - einer relativ undeterminierten Sprache bedient. Danke Euch beiden! |
AW: Verständnisfrage zu Unit: Initialization und Finalization
Ich weiß dieses Thema ist alter aber ich habe dazu eine Frage.
Und zwar wie ich eine Initialization und Finalization schreibe ich habe mich da durch gelesen aber ich bin ein Anfänger und habe es nicht so richtig verstanden. könnte mir jemand einen kurzen Quelltext darüber schreiben als beispiel damit ich es zu mindest um den Text zu verstehen darüber ein Beispiel bekommen ( wenn es geht bitte vereinfacht ). Danke wenn das jemand ließt und meine frage beantwortet |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz