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);