Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.672 Beiträge
 
Delphi 2007 Professional
 
#1

E/A-Fehler in Wrapperklasse

  Alt 21. Feb 2012, 12:49
Delphi-Version: 2007
Hallo zusammen!

Ich bastele mir gerade eine kleine Klasse zusammen, die u.a. ein TextFile enthält. Dummerweise reagiert mein Konstrukt anders als erwartet, wenn ich versuche, eine nicht vorhandene Datei zu öffnen. Hier mal meine Test-Unit:
Delphi-Quellcode:
{$IOCHECKS ON}
unit Unit2;

interface

type
  TTest = class
  private
    f: TextFile;
  public
    constructor Create(const AFileName: string);
    destructor Destroy; override;

    class procedure Execute(const AFileName: string); static;
  end;

procedure Test(const AFileName: string);

implementation

{ TTest }

constructor TTest.Create(const AFileName: string);
begin
  inherited Create;
  AssignFile(f, AFileName);
  Reset(f);
end;

destructor TTest.Destroy;
begin
  CloseFile(f);
  inherited;
end;

class procedure TTest.Execute(const AFileName: string);
var
  t: TTest;
begin
  t := TTest.Create(AFileName);
  try
    //
  finally
    t.Free;
  end;
end;

{ Test }

procedure Test(const AFileName: string);
var
  f: TextFile;
begin
  AssignFile(f, AFileName);
  Reset(f);
  try
    //
  finally
    CloseFile(f);
  end;
end;

end.
Wenn ich nun Test('C:\Gibts.nicht'); aufrufe, kriege ich wie erwartet "Datei nicht gefunden." (E/A-Fehler 2). Führe ich allerdings TTest.Execute('C:\Gibts.nicht'); aus, so kommt die Meldung "E/A-Fehler 103.". Kann mir das jemand erklären?
Uli Gerhardt
  Mit Zitat antworten Zitat