Also in dem Fall war es eigentlich falsch, denn Michael hätte hier PAnsiChar verwenden müssen,
da explizit SHMessageBoxCheck
A verwendet wurde, was aber nicht so leicht auffällt, da nicht der Name verwendet wurde und auch der Typ nicht A heißt.
Zitat:
SHMessageboxCheck := GetProcAddress(hLib, PChar(185));
185 ist die ID für SHMessageBoxCheck
A.
Die ID für SHMessageBoxCheck
W kenn ich jetzt nicht, also würde ich hier mal schauen, ob es nicht doch besser über den Namen geht.
Delphi-Quellcode:
type
TSHMessageBoxCheck = function(hWnd: THandle; Text, Title: PWideChar;
dwType: DWORD; Default: Integer; RegVal: PWideChar): Integer; stdcall;
SHMessageboxCheck := GetProcAddress(hLib, 'SHMessageBoxCheckW');
Hätte Michael hier
ANSI verwendet, dann hätte dir der Compiler sofort eine Warnung gezeigt,
da PAnsiChar und PWideChar/PChar nicht kompatibel sind.
Der Rest darf auf PChar und String bleiben, da PChar und PWideChar mit der UnicodeAPI kompatibel sind. (früher kompatibel mit PAnsiChar, bei der
ANSI-
API)
Und selbst im unwahrscheinlichen Fall (im Delphi), oder z.B. im FreePascal, wird der Compiler nun eine eventuelle Inkompatibilität melden.