Einzelnen Beitrag anzeigen

Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#1

Exit-Funktion erweitern

  Alt 20. Mai 2009, 08:31
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
Lars
There are 10 kinds of people in the world:
those who get binary, and those who don’t.
  Mit Zitat antworten Zitat