![]() |
Sinn & Funktion Initialisierungs-/Finalisierungsteil
Hallo zusammen,
in einem Informatikvortrag soll ich in einen Programmbeispiel auch den Initialisierungs- und den Finalisierungsteil einer Unit nutzen. Der Sinn des Initialisierungszeil ist eigentlich klar - es sollen Operationen durchgeführt werden, die nur einmal zum Start des Programms ausgeführt werden. Für den Finalisierungsteil bedeutet das natürlich, dass dann die Operationen zum Ende des Programms gemeint sind. Schön und gut - wie sieht das nun aber programmiertechnisch aus - hat da jemand ein Beispiel für mich? Muss ich nun den Initialisierungsteil noch mit begin & end bestücken oder nicht? Da fängts ja schon an.... Ich dachte mir - laienhaft -, dass ich einfach mal eine Prozedur in den Initialisierungsteil packe & eine in den Finalisierungsteil. Funktioniert natürlich nicht - war ja klar -.-. Anbei mal ne ganz simple Unit - alles super, aber wie packe ich nun was da bei Initialization und Finalization rein? Würde mich freuen, wenn mir jemand da kurz weiterhelfen könnte - vielen Dank für die Bemühungen im Voraus!!! LG - Hannes -----
Delphi-Quellcode:
[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]
unit Unit1;
interface procedure werte_einlesen(var k,w:real); procedure ausgabe(x,y:real); implementation procedure werte_einlesen(var k,w:real); begin writeln('Eingabe k'); readln(k); writeln('Eingabe w'); readln(w); end; procedure ausgabe(x,y:real); var i:real; begin i:=x*y; writeln('Ausgabe:',i:3:2); end; initialization finalization end. |
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Also ein gutes Beispiel wäre z.b. ein Singleton, d.h. ein Objekt das halt irgendwann einmal erstellt wird und dann theorethisch überall aufgerufen werden kann und immer das gleiche eine Objekt ist. Z.b. ein Manager an dem Objekte dran hängen, die über Änderungen informiert werden.
Im Finalization-Teil könnte man dort z.b. damit man sicher ist das das Objekt freigegeben wird, das Objekt am Ende des Programms wieder freigeben und die Objekte die an ihm hängen vorher abmelden. Zum Initialization-Teil fällt mir grade nichts ein :gruebel: MfG Alaitoc |
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Für den Initialization-Teil ist ein einfach es Beispiel das nötige randomize beim Verwenden von random.
Oder eben ein Objekt z.B. TList, das in der Unit benötigt wird, das kann man dann beim Start anlegen und beim Beenden wieder zerstören... |
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Ahhhhhhso - das hilft mir schon mal weiter, vielen, vielen Dank!
Das bedeutet, dass man in der simplen Konsolenanwendung zum Beispiel das realdln, was man ja benötigt, damit man die Ergebnisse noch sieht, einfach in den Finalisierungs-Teil packen könnte... Jedenfalls hat es ansätzlich klick gemacht - vielen Dank für die schnelle Hilfe an euch & liebe Grüße - Hannes :-) |
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Das ist die Spielwiese für böse Buben die die Finger nicht von globalen Variablen lassen können
Delphi-Quellcode:
Gruß
unit u1
var mystringlist : tstringlist; ..... initialization mystringlist:=tstringlist.create; finalization mystringlist.free; end; K-H Edit: Das Readln gehört mehr zum eigentlichenProgrammablauf. da wird nur Aufgebaut und wieder aufgeräumt |
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Zitat:
In einer simplen Konsolenanwendung kannst du das Readln als letzten Befehl schreiben und gut. Dieses Beispiel wird dir jeder vernünftige Informatiker zerpflücken. Und jeden Laien wirst du damit auf die falsche Fährte bringen. |
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Auch wenn initialization und Finalisation in der Unit leer sind, wird trotzdem per Compiler-Magic was gemacht, z.B. Strings finalisiert
|
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Hat eigentlich schon jemand erwähnt, dass initialization- und finalization-Abschnitte nur einmalig im gesamten Programm abgearbeitet werden, egal wie oft die Unit eingebunden wird?
|
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
btw.
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} uses SysUtils; // Hier nix mit initialization oder finalization begin try { TODO -oEntwickler -cKonsole Main : Hier Code einfügen } except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. |
Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
Zitat:
Ok, das mit der Stringliste klingt ja relativ sinnvoll - bei Programmstart freigeben/erstellen und bei Programmende den Speicherplatz/die Liste wieder freigeben. Guuuut...großes Dankeschön an euch! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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