Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Sinn & Funktion Initialisierungs-/Finalisierungsteil (https://www.delphipraxis.net/148238-sinn-funktion-initialisierungs-finalisierungsteil.html)

hannes2011 25. Feb 2010 16:55


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:
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.
[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]

Alaitoc 25. Feb 2010 17:12

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

omata 25. Feb 2010 17:12

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...

hannes2011 25. Feb 2010 17:22

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 :-)

p80286 25. Feb 2010 17:23

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:
unit u1

var
  mystringlist : tstringlist;

.....

initialization
  mystringlist:=tstringlist.create;
finalization
  mystringlist.free;
end;
Gruß
K-H

Edit:
Das Readln gehört mehr zum eigentlichenProgrammablauf.
da wird nur Aufgebaut und wieder aufgeräumt

Sir Rufo 25. Feb 2010 17:26

Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
 
Zitat:

Zitat von hannes2011
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 :-)

oh, gott ... bloß nicht!

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.

guinnes 25. Feb 2010 17:27

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

DeddyH 25. Feb 2010 17:28

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?

Sir Rufo 25. Feb 2010 17:32

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.

hannes2011 25. Feb 2010 17:33

Re: Sinn & Funktion Initialisierungs-/Finalisierungsteil
 
Zitat:

Zitat von Sir Rufo
oh, gott ... bloß nicht!

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.

Weia...da gäbe es dann also schön Ärger...ok, falscher Gedankengang.
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 23:33 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz