Ich hab mich schon immer gefragt wie andere hier das mit dem Try Finally Block machen. Guckt man sich fremden Code an, bekommt jedes Objekt oft seinen eigenen Block. Das habe ich mir irgendwann so abgeguckt und mache es auch:
Delphi-Quellcode:
Bmp := TBitmap.Create;
try
{ Hier gibt es keinen Code }
sl := TStringList.Create;
try
{ Es gibt nur hier Code }
//Hier gibt es einen Fehler
finally
sl.Free;
end;
{ Hier gibt es keinen Code }
finally
Bmp.Free;
end;
Allerdings denke ich mir manchmal, dass es Quatsch ist. Denn wenn es im oberen Beispiel mittendrin ein Error gibt, unterscheidet das System nicht zwischen Bitmap und StringList Error. Zuerst geht es zum sl-Finally, dann zum Bmp-Finally. Warum also nicht gleich so?
Delphi-Quellcode:
var
Bmp: TBitmap;
sl: TStringList;
begin
Bmp := TBitmap.Create;
sl := TStringList.Create;
try
{ Es gibt nur hier Code }
//Hier gibt es einen Fehler
finally
sl.Free;
Bmp.Free;
end;
end;
Wie gesagt, ich sehe die obere Variante sehr oft, nur sehe ich keinen Sinn drin.