Einzelnen Beitrag anzeigen

joacim

Registriert seit: 30. Apr 2003
Ort: Immenrode
60 Beiträge
 
Delphi 6 Professional
 
#22

AW: loadlibrary unter W10

  Alt 16. Dez 2019, 13:41
Ich habe hier - nur als Beispiel - zwei Funktionen

Delphi-Quellcode:
function b_ADDIDATA_GetNumberOfDigitalInputs(dw_DeviceHandle : DWord; var w_NumberOfChannels : word) : byte; far; stdcall; external 'ADDIDATA.DLL';
function b_ADDIDATA_Read4DigitalInputs(dw_DeviceHandle : DWord; b_port : byte; var b_portValue : byte) : byte; far; stdcall; external 'ADDIDATA.DLL';
Wie schon geschrieben, wurde im Vorläuferprojekt immer das Handle an die Funktion übergeben.
Die beiden Funktionen erwarten auch hier die Übergabe von dw_DeviceHandle, nicht als var, also nicht als Rückgabewert!

In der Dokumentation steht z.B.
<return value> = b_ADDIDATA_Read4DigitalInputs(DWORD dw_DeviceHandle,
BYTE b_port : byte,
PBYTE pb_portValue)

Ich interpretiere PBYTE als Pointer auf ein Byte, daher VAR im Delphi. dw_DeviceHandle ist aber DWORD also kein VAR,
also auch kein Rückgabewert. Warum ist es völlig gleichgültig, was ich da übergebe? Das Lesen der digitalen Eingänge funktioniert jerdenfalls, auch mit dw_DeviceHandle = 0. Die Antwort kann wahrscheinlich nur der Hersteller geben.
  Mit Zitat antworten Zitat