Zitat von
FriFra:
Doch, der passt schon... Das muss ein Pointer auf den entspr. Rückgabewert sein.
Ein Parameter mit dem Schlüsselwort
var wird als Zeiger übergeben.
Der Vorteil dabei ist aber die Typsicherheit.
Ein Pointer kann auf alles Mögliche zeigen; ein var-Parameter hat aber einen festgelegten Datentyp (hier: Byte)
und es ist garantiert, dass der Zeiger der übergeben wird auf eine gültige Speicherstelle zeigt.
Wenn man's ganz genau nimmt, müsste man einen
out-Parameter verwenden:
Delphi-Quellcode:
function Unlock_Device(net_id: Byte; szPassword: PChar; out Errorcode: Byte):
integer; stdcall; external 'EASY_COM.DLL' name 'Unlock_Device';
Im Prinzip das Gleiche wie der var-Parameter, nur weiss der Compiler jetzt, dass Errorcode nach Aufruf der Funktion
einen Wert bekommen hat und gibt keine Warnung aus.
Die Delphi-Deklaration ist genau passend zu der VB-Deklaration.
Schieb doch noch die Deklaration für C nach (steht in irgendeinem *.h File).
Der Fehler muss jetzt wo anderst liegen (falsche net_id, falsches Passwort ?).