Forum: Object-Pascal / Delphi-Language
by Namenloser,
20. Mai 2011
@stahli: Aber genau was du beschreibst, das macht doch try-finally. Verabschiede dich doch mal von dem Gedanken, dass try-finally immer was mit Fehlern zu tun hat.
procedure xyz;
begin
A := TA.Create;
B := TB.Create;
...
FinallyExit:
A.Free;
B.Free;
end;
Forum: Object-Pascal / Delphi-Language
by Namenloser,
20. Mai 2011
Sagt wer? Try-Except ist zum Abfangen von Fehlern, ja, Try-Finally nicht unbedingt. Man verwendet Try-Finally zwar oft dazu, Ressourcen garantiert (auch im Falle eines Fehlers) wieder freizugeben, aber wie man sieht gibt es nicht nur diesen Anwendungsfall. Im Grunde heißt Try-Finally nur, dass ein bestimmter Code versuchsweise ausgeführt werden soll, und anschließend garantiert ein bestimmter...
Forum: Object-Pascal / Delphi-Language
by Namenloser,
19. Mai 2011
Ich sehe einfach nicht was der Vorteil von deinem FinallyExit sein soll. Was ist der Unterschied, ob ich schreibe
procedure Foobar;
begin
try
{…}
if foo=bar then
Exit;
{…}
finally
Forum: Object-Pascal / Delphi-Language
by Namenloser,
30. Apr 2011
Dann brauchst du in der äußeren aber immer noch ein break oder ein Abort-Flag.
Forum: Object-Pascal / Delphi-Language
by Namenloser,
30. Apr 2011
Ja, da magst du recht haben, hab mir das Beispiel nicht soo genau angeschaut, aber es gibt schon recht häufig Fälle, wo man verschachtelte Schleifen hat und aus mehreren raus muss, auch wenn kein Fehler auftritt. Z.B. wenn man in einem Baum einen Knoten sucht o.ä..
Forum: Object-Pascal / Delphi-Language
by Namenloser,
30. Apr 2011
Genau so ist es. Ich setze Exit und Break ein, wo es sinnvoll ist. Ich habe sogar letztens zum ersten mal seit 5 Jahren oder so mal wieder ein Goto verwendet, weil – ihr werdet es nicht glauben – es den Code erheblich vereinfacht hat.
Das:
ist einfach nicht übersichtlicher als das:
Egal wie oft man es behauptet. Ich habe so ähnliche Dinger wie das obere Beispiel (Danke, FredlFesl)...