Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.204 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: E/A-Fehler in Wrapperklasse

  Alt 21. Feb 2012, 13:57
Wenn der Constructor fehlschlägt (Exception), dann wird die Klasse gleich wieder freigegeben (Destroy wird aufgerufen).
(Ob das soweit stimmt, würde einem der Debugger verraten)

Die Klasse entspricht also eher diesem: (man beachte das Reset)
Delphi-Quellcode:
procedure Test(const AFileName: string);
var
  f: TextFile;
begin
  AssignFile(f, AFileName);
  try
    Reset(f);
    //
  finally
    CloseFile(f);
  end;
end;
Wie sieht denn die Fehlermeldung hier aus?



Und was passiert bei Folgendem?
Delphi-Quellcode:
destructor TTest.Destroy;
begin
  if TFileRec(f).Mode <> fmClosed then
    CloseFile(f);
  inherited;
end;

// oder
destructor TTest.Destroy;
begin
  //if TFileRec(f).Mode in [fmInput, fmOutput, fmInOut] then
  if TFileRec(f).Mode = fmInput then
    CloseFile(f);
  inherited;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat