![]() |
Re: Sind diese API funktionen richtig übersetzt?
Da ich nicht mehr viel mit Delphi mache würde ich auf dem ersten Blick sagen, das
Delphi-Quellcode:
so nicht geht .... du brauchst einen verweiß auf den Speicher und nicht den Speicher selbst. Also
pcchBuff:DWORD
Delphi-Quellcode:
oder
var
Delphi-Quellcode:
mit anderen Worten ein Pointer.
PDWORD
Mfg nitsche |
Re: Sind diese API funktionen richtig übersetzt?
Moin Martin,
Du musst Deinem Delphi auch mitteilen, wo die Funktion zu finden ist:
Delphi-Quellcode:
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.
function ShutdownBlockReasonQuery(const hWnd:HWND; const pwszBuff:LPWSTR; const pcchBuff:PDWORD):BOOL; stdcall; external 'user32.dll' name 'ShutdownBlockReasonQuery';
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). |
Re: Sind diese API funktionen richtig übersetzt?
Delphi-Quellcode:
...verwendet man, wenn nach API Spezifikation der Parameter optional (IN_OPT, OUT_OPT) ist.
pcchBuff:PDWORD
Sonst muss man eine Verrenkung machen, damit nil direkt angenommen wird. Ist nil nicht erlaubt, verwendet man:
Delphi-Quellcode:
Da ist die (unabsichtliche, direkte) Angabe von nil schon schwieriger.
var pcchBuff:DWORD
Const hat keine Auswirkung hier. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz