@GeorgeWNewbie: Das ist aber auch nicht dein Ernst oder?
Delphi-Quellcode:
Try
l := TStringList.Create;
filename := OpenDialog.FileName;
l.LoadFromFile(filename);
Label1.Caption := filename; // Hier steht das Programm nach der Fehlermeldung...
Except
l.Free;
showmessage('Fehler aufgetreten!');
End;
Kuck mal ins Ausgabe Fensters deines Kompilers. Nur so viel, wWrnungen sollte man ernst nehmen. Borland hat sich schon was dabei gedacht, selbige zu generieren und dem Programmierer anzuzeigen. Und wieder: Tritt keine
Exception auf, wird das Objekt nicht freigegeben.
Wieder muss es richtig heißen:
Delphi-Quellcode:
var
sl: Tsringlist;
begin
if OpenDialog1.Execute then
begin
sl := TStringlist.Create;
try
sl.LoadFromFile(OpenDialog1.Filename);
// tu was
finally
FreeAndNil(sl);
end;
end;
Sollte man auch nicht vorhandene Dateinamen im OpenDialog zu lassen, kann man das ganze auch so erweitern:
Delphi-Quellcode:
var
sl: Tsringlist;
begin
sFile := '';
if OpenDialog1.Execute then
begin
if OpenDialog1.Filename <> '' then
begin
sl := TStringlist.Create;
try
sl.LoadFromFile(OpenDialog1.Filename);
// tu was
finally
FreeAndNil(sl);
end;
end;
end;
Exceptionen sollten da benutzt werden, wo sie Sinn machen, wenn es um Zustände geht die man eventuellnicht beeinflussen kann. Hier kann ich aber mittels einer simplen if-Abfrage sicherstellen, dass nichts passiert. Jeder try-except/finally-Block kostet Unmengen an CPU Taktzyklen und erfordert erheblichen organisatorische Aufwand was den Stack und die Register angeht.