GetLastError wird leider auch dann auf 0 gesetzt, wenn der Code in einer
DLL ausgelagert ist und man diesen im Except abfragt.
Wünschenswert wäre es, wenn EFileStreamError um LastError erweitert wird.
Bis dahin verwende ich (wenn möglich) meine eigenen TFSFileStream.
Delphi-Quellcode:
TFSFileStream = class(THandleStream)
strict private
FFileName: string;
public
constructor Create(const AFileName: string; Mode: Word); overload;
destructor Destroy; override;
property FileName: string read FFileName;
end;
EFSFileStreamError = class(EFileStreamError)
private
FLastError: Cardinal;
public
constructor Create(ResStringRec: PResStringRec; const FileName: string);
property LastError: Cardinal read FLastError;
end;
EFSCreateError = class(EFSFileStreamError);
EFSOpenError = class(EFSFileStreamError);