Guten Morgen zusammen,
zur Zeit arbeite ich intensiv mit DLLs und habe deshalb eine GetLastError-Funktion. Diese wird natürlich mit eine SetLastError-Funktion intern gefüttert. Jetzt bin ich aber an einem Punkt, andem soetwas wie eine Exit-SetLastError-Funktion nützlich wäre. Also die ErrorVariable gesetzt wird und die Funktion beendet. Prinzipiell müsste ich doch einfach nur den Stack soweit zurück springen bis ich wieder beim Caller bin.
Beispiel:
Delphi-Quellcode:
// In der DLL
function ReadAll(Stream : TMyStream) : PChar;
stdcall;
begin
// LastError wird zu INVALID_PARAM, Result = nil, Ausgang von ReadAll
if Stream =
nil then SetLastErrorExit(BASE_ERR_INVALID_PARAM,
nil)
else begin
..
end;
end;
// Im Programm
function Test() : Boolean;
var
Stream : TMyStream;
begin
Stream := TMyStream.Create;
// Beispiel
// Ich rufe eine Funktion meiner DLL auf
if ReadAll(Stream) =
nil then ShowMessage(Format('
Fehler: %d', [GetLastError]));
Stream.Free;
end;
Ist sowas möglich? Naja warscheinlich schon, allerdings sehr unsauber oder?
Mfg Desmu