Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#5

AW: VistaTaskDialog

  Alt 22. Aug 2020, 16:25
Also in dem Fall war es eigentlich falsch, denn Michael hätte hier PAnsiChar verwenden müssen,
da explizit SHMessageBoxCheckA 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 SHMessageBoxCheckA.

Die ID für SHMessageBoxCheckW 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Aug 2020 um 16:32 Uhr)
  Mit Zitat antworten Zitat