Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Sind diese API funktionen richtig übersetzt?

  Alt 27. Apr 2009, 19:32
Moin Martin,

Du musst Deinem Delphi auch mitteilen, wo die Funktion zu finden ist:

function ShutdownBlockReasonQuery(const hWnd:HWND; const pwszBuff:LPWSTR; const pcchBuff:PDWORD):BOOL; stdcall; external 'user32.dllname 'ShutdownBlockReasonQuery'; const gebe ich bei solchen Importen immer an, da die C-Funktionen keine var-Parameter kennen, und man so Funktionen erhält, bei denen man, ohne grosse Verrenkungen, auch die Beispiele verwenden kann.
Würde man hier, z.B., den letzten Parameter als var deklarieren, kann man niemals nil übergeben, was bei vielen Funktionen auch möglich ist (der letzte Parameter muss hier dann als PDWORD deklariert werden.).
Mit dem external gibt man an, in welcher DLL die Funktion zu finden ist, und mit name, wie die Funktion in der DLL heisst.
Letzteres ist hier überflüssig, da der für Delphi gewählte Funktionsname der gleiche ist, wie in der DLL, aber es gibt oft Funktionen, die als ANSI und WIDE enthalten, und mit einem A bzw. W am Ende des Namens gekennzeichnet ist.
Da man, i.d.R., nur eine der beiden Varianten benötigt, kann man die Kennung im Delphi-Funktionsnamen weglassen und bei name die gewünschte Version eintragen.
(Wichtig: Die Gross-/Kleinschreibung ist bei name exakt einzuhalten).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat