Delphi-Quellcode:
procedure TForm2.ReadPointlist3Dfile(filename: string);
var
AptList: TPointList3DAlign;
begin
if not FileExists(filename) then begin
MessageDlg(Format('Datei %s wurde nicht gefunden.',[ExtractFileName(Filename)]),mtError,[mbOk],0);
exit;
end;
AptList := TPointList3DAlign.Create;
try
AptList.LoadfromFile(filename);
CopyPointList2Memo(AptList, 'debug 3D', Memo3);
finally
AptList.Free; // oder muss AptList nicht freigegben werden???
end;
end;
Delphi-Quellcode:
procedure TForm2.ReadInifile(filename: string);
var
aini: TInifile;
Sections: TStringlist;
begin
if not FileExists(filename) then begin
MessageDlg(Format('Datei %s wurde nicht gefunden.',[ExtractFileName(Filename)]),mtError,[mbOk],0);
exit;
end;
aini := TInifile.Create(filename);
try
Sections := TStringlist.Create;
try
aini.ReadSections(Sections);
Memo2.Lines.AddStrings(Sections);
finally
Sections.Free; // Damit die Freigabe auch bei Fehlern erfolgt.
end;
finally
aini.Free; // Damit die Freigabe auch bei Fehlern erfolgt.
end;
end;
Wenn in der ursprünglichen Routine einmal ein Fehler auftritt, bleibt (schlimmstenfalls) der Zugriff auf die Datei "Filename" bestehen und wenn Du Pech hast, ist die Datei (dauerhaft) blockiert. (Kommt halt auf die jeweils verwendeten Zugriffsrechte auf Dateiebene an.)
Wenn
Zitat:
eine andere *.ini Datei, im anderen Ordner mit der selben Delphi Anwendung geschieben funktioniert perfekt
, heißt das nicht, dass man auf jegliche Fehlerbehandlung und die gesicherte Freigabe von Objekten, ... verzichten kann.
Fehlerbehandlung und Ressourcenschutzblöcke sind halt nicht für den funktionierenden Normalfall, sondern für die Ausnahmen-/Fehlerbehandlung erforderlich, damit eben auch dann "normal" weitergearbeitet werden kann und nicht "irgendwie, irgendwo, irgendwann" nicht nachvollziehbare "Spätfolgen" auftreten.