Tafkadasom2k5 hat geschrieben:Hi!
Ich bin kein Visual-Basic Checker, aber ist
in PureBasic nicht ein "Word"?
Du übergibst in deinem VB-Code aber einen Integerwert.
Vielleicht liegt da der Hund begraben?
Gr33tz
Tafkadasom2k5
P.S.:
Was bedeuten die Parameter "ByRef", "ByCopy" oder "ByValue"?
Die sind mir auch n PowerBasic schon oft über den Weg gelaufen, aber mit "ByVal" bin ich bisher gut gefahren...
Wozu die anderen Parameter?
Ist schon richtig, da VB-Integer = PB-Word.
ByRef = Es wird ein Pointer zu dem Parameter übergeben, das ermöglicht der DLL-Funktion die Daten zu verändern ohne sie explizit zurückgeben zu müssen.
ByVal = Der Wert des Parameters wird kopiert und dann übergeben, das heißt der Originalparameter wird von der DLL-Funktion nicht angetastet.
Leider bin ich noch PB-Noob und weiß nicht was das zu bedeuten hat:
Aber ich gehe stark davon aus das bei der übergabe dieses Parameters der Fehler liegt, da du ihn in VB als Variant übergibst. Also wenn *zeiger.feld ein Array aus Zeigern ist, müsstest du "Daten" so übergeben:
dabei müsstest du allerdings wissen wieviele Elemente das Feld enthält.
Code: Alles auswählen
Declare Function I2C_Write Lib "I2C_Port.dll" (ByVal Adresse As Integer, ByRef Daten(Anzahl) As Long, ByVal Anzahl As Integer)