Zitat von
himitsu:
Wenn du eigene Fehlercodes z.B. über
SetLastError (
GetLastError) ausliefern willst, dann kannst du diese nicht einfach so vergeben ... (die 1 ist z.B. schon belegt)
Es gibt dort einen nur gewissen Bereich, welchen du verwenden dürftest, außerdem gibt es für diese Codes ein festgelegtes Format.
Okay, das stimmt natürlich. Deshalb nutzt man auch hier das 29te Bit, um damit keine Probleme zu haben:
Zitat:
Bit 29 is reserved for application-defined error codes; no system error code has this bit set.
Das gilt auch für HRESULT nur nutzt man da normal nicht SetLastError, was aber möglich wäre.
Daher zwei mögliche Wege.
1. HRESULT als Rückgabewert nutzen:
Delphi-Quellcode:
function MyFunc(...) : HRESULT;
begin
result := MakeResult(1, 100, MY_ERROR) or $20000000;
end;
2. SetLastError nutzen
Delphi-Quellcode:
function MyFunc(...) : Boolean;
begin
//fehler
SetLastError(MakeResult(1, 100, MY_ERROR) or $20000000);
result := false;
end;
Das sieht jetzt merkwürdig aus, weil normal bei GetLastError einer der ERROR_XXX (z.B. ERROR_FILE_NOT_FOUND) rauskommt. Aber der Autor der Funktion kann das selbst bestimmen.
Zitat von
DJ-SPM:
Das hört sich recht interessant an und ich bin nicht abgeneigt. Aber...: Bin ich dann von
ActiveX abhängig?
So genau habe ich das jetzt nicht verstanden.
Nein, das ist die
Unit ActiveX.pas, worin diese Funktionen deklariert sind. D.h. nicht, dass du
ActiveX verwendest. Du könntest diese Funktionen auch einfach rauskopieren oder selbst erstellen.