DLL Import

30/10/2008 - 22:34 von AndiRoe | Report spam
Hi,

ich habe eine USB-Box zur Spannungsmessung.

Der Beispielcode für VB lautet wie folgt und funktioniert auch:

Private Declare Sub ReadData Lib "k8047d.dll" (Array_Pointer As Long)
Dim DataBuffer(0 To 7) As Long
Private Sub Command1_Click()
Dim i As Integer
Dim s As String
ReadData DataBuffer(0)
s = ""
For i = 0 To 5
s = s + Str(DataBuffer(i)) + Chr(9)
Next i
List1.AddItem s
End Sub

für VB 2008 habe ich nun wie folgt geàndert:

<DllImport("k8047d.dll")> Shared Function ReadData(ByVal databuffer() As
Int32)
End Function

Dim DataBuffer(8) As Int32

Call ReadData(DataBuffer(0))

Ich erhalte den Fehler:

Der Wert vom Typ "Integer" kann nicht in "1-dimensionales Array von Integer"
konvertiert werden.

Woran liegt das ?

Besten Dank im Vorraus

Andi
 

Lesen sie die antworten

#1 Armin Zingler
30/10/2008 - 22:58 | Warnen spam
"AndiRoe" schrieb
Hi,

ich habe eine USB-Box zur Spannungsmessung.

Der Beispielcode für VB lautet wie folgt und funktioniert auch:

Private Declare Sub ReadData Lib "k8047d.dll" (Array_Pointer As
Long)
Dim DataBuffer(0 To 7) As Long
Private Sub Command1_Click()
Dim i As Integer
Dim s As String
ReadData DataBuffer(0)
s = ""
For i = 0 To 5
s = s + Str(DataBuffer(i)) + Chr(9)
Next i
List1.AddItem s
End Sub

für VB 2008 habe ich nun wie folgt geàndert:

<DllImport("k8047d.dll")> Shared Function ReadData(ByVal
databuffer() As Int32)
End Function

Dim DataBuffer(8) As Int32

Call ReadData(DataBuffer(0))

Ich erhalte den Fehler:

Der Wert vom Typ "Integer" kann nicht in "1-dimensionales Array von
Integer" konvertiert werden.

Woran liegt das ?




Die Datentypen stimmen im Gegensatz zum VB6-Code nicht überein. Die Funktion
erwartet ein Integer-Array, du übergibst aber einen einzelnen Integer-Wert.
Funktioniert es mit "ByRef databuffer As Int32" nicht? Außerdem sollte es
eine Sub und keine Function sein. Làsst sich so auch gar nicht kompilieren.
Die obere Array-Grenze kann außerdem weiterhin 7 bleiben.


Armin

Ähnliche fragen