AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exit-Funktion erweitern

Ein Thema von Desmulator · begonnen am 20. Mai 2009 · letzter Beitrag vom 20. Mai 2009
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz