Einzelnen Beitrag anzeigen

scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#6

Re: Eigene Klasse mit eigener Fehlerbehandlung ausstatten

  Alt 17. Dez 2003, 15:36
    fs.OnError := SplitError; kann ja nicht funktionieren, weil OnError ja vom Typ EFileSplitterError ist und SplitError ne Prozedur. Eigentlich müsste es ja dann heissen:

    fs.OnError.OnError := SplitError; Was auch zuweisungstechnisch geht, aber fs.OnError (die Exception) ist ja in dem Fall noch nicht initialisiert.

Ich würde den Error so deklarieren:
Delphi-Quellcode:
  EFileSplitterError = class(Exception)
  protected
    FErrorCode : Integer;
  public
    constructor CreateError(const AErrCode: Integer;
     const AMessage: string); reintroduce; virtual;
    property ErrorCode: Integer read FErrorCode;
  end;

//...
constructor EFileSplitterError.CreateError(const AErrCode: Integer;
     const AMessage: string);
begin
  inherited Create(AMessage);
  FErrorCode := AErrCode;
end;
Der Aufruf wäre dann so:

Delphi-Quellcode:
  TFileSplitter = class
  private
    FSError: TOnError;
//...
    property OnError: TOnError read FSError write FSError;
  end;

//...

    if Assigned(OnError) then
    begin
      OnError(self, 1, EEmptyFile);
      exit;
    end
    else
      raise EFileSplitterError.CreateError(1, EEmptyFile);
  Mit Zitat antworten Zitat