![]() |
AW: Hilfestellung Speichern/Laden von Werten in anderen Datein
Zitat:
In diesem Konstrukt wird der gesamte
Delphi-Quellcode:
Block nur dann ausgeführt, wenn
try .. finally .. end
Delphi-Quellcode:
keine Exception wirft.
TMyFoo.Create
Delphi-Quellcode:
Hier sieht das aber ganz anders aus. Wenn
MyFoo := TMyFoo.Create;
try // irgendwas mit MyFoo machen finally MyFoo.Free; end;
Delphi-Quellcode:
eine Exception wirft, dann wird der
TMyFoo.Create
Delphi-Quellcode:
Teil ausgeführt.
finally
Delphi-Quellcode:
Wir haben also 2 völlig unterschiedliche Verhaltensweisen. In dem gezeigten Beispiel mag das zwar völlig wumpe sein, aber man sollte sich dessen bewusst sein.
try
MyFoo := TMyFoo.Create; // irgendwas mit MyFoo machen finally MyFoo.Free; end; Zitat:
Delphi-Quellcode:
Denn das ist genau das was du vorschlägst:
procedure Foo;
var lFoo : Integer; begin lFoo := 0; // es könnte ja was ganz doofes da in lFoo stehen, also nur so zur Sicherheit lFoo := 100; ... end;
Delphi-Quellcode:
procedure Foo;
var lFoo : TFoo; begin lFoo := nil; // es könnte ja was ganz doofes da in lFoo stehen, also nur so zur Sicherheit lFoo := TFoo.Create; ... end; |
AW: Hilfestellung Speichern/Laden von Werten in anderen Datein
Ja, ich hab mich nur kurz ausgedrückt. Eigentlich bin ich vollkommen deiner Meinung, ohne sl:= nil könnte free Daten zerstören. Free prüft soweit ich richtig bin, immer ob überhaupt eine Instanz des Objektes besteht, deshalb das sl:= nil vor dem create.
Ich selbst gehe fast immer so vor
Delphi-Quellcode:
warum? In der Regel ist es so, dass mehrere Objekte erzeugt werden müssen, eine komplexe Verschachtelung von Try und Finally für jedes einzelne Objekt macht den Code dann extrem unübersichtlich. Deshalb erzeuge ich Objekte meist innerhalb des Try Blockes.
foo := nil;
try foo := TFoo.create; //mach was finally foo.free; end; Bsp.:
Delphi-Quellcode:
foo := nil;
bar:= nil; try foo := TFoo.create; bar:=TBar.create; //mach was mit Foo und Bar finally bar.free foo.free; end; |
AW: Hilfestellung Speichern/Laden von Werten in anderen Datein
@ alle
Vielen Dank für eure reiche Hilfe, meine Fragen bzgl Thema sind beantwortet und thread kann geclosed werden :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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