Hallo alle miteinander!
Zur Zeit mache ich meine Bachelorarbeit in einem Unternehmen. Ich soll hier ein bisschen mit VB .net arbeiten. Ich bin eigentlich kein Programmierer. Habe vor Jahren ein bisschen mit C++ programmiert, aber nur Basics. Ich habe schon Hilfe, Suchfunktion durch und jeden hier auf der Arbeit gefragt, der das wissen könnte, leider ohne Erfolg.
Ich bin neu hier im Forum, daher verzeiht mir mein Unwissen
Es geht darum eine DLL Funktion aufzurufen, die in einem von mir erstellten ByteArray Werte schreibt. Ich übergebe das erste Feld als Ref.. DLL erwartet einen Zeiger. (aber das sehr ihr ja selbst )
Das gleiche Programm funktioniert in VB6 ohne Probleme!!!
Jedoch soll dies auch in vb .net laufen.
In einem späteren Schritt wird dann das mit Asciizeichen gefüllte ByteArray in einen String umgewandelt.(aber dazu kommt es ja erst gar nicht)
ich habe irgendwo was gelsen von marshalling oder so? könnte das mich hier weiterbringen?
Nach dem Aufruf der Funktion ist das Feld nicht mehr vorhanden. Wenn ich mit der Maus während der Laufzeit über Feld gehe, zeigt er mir "Length=0" an ... und keinen Wert.
Wenn ich bei VB6 dort eine überwachung hinzufüge, sind nach dem Aufruf noch alle Felder da und die ersten ca. 100 beschrieben mit dem richtigen Inhalt.
Ich bin ratlos ...
hier der Code:
Function ReadCommPure(ByRef ComHd As Short) As String
Dim RS232Receive(1024) As Byte
Dim RetBytes, retval As Integer
Dim ReadStr As String
retval = ReadFile(ComHd, RS232Receive(0), 1024, RetBytes, 0) Und der DLL Aufruf
Declare Function ReadFile Lib "kernel32" (ByVal hFile As Integer, ByRef _
lpBuffer As Byte, ByVal nNumberOfBytesToRead As Integer, ByRef _
lpNumberOfBytesRead As Integer, ByRef lpOverlapped As Integer) As Integer Ich wäre echt extrem Dankbar, wenn jeman mir helfen könnte ( mein Chef übringends auch )
Also schon mal fetten Dank für alle Antworten und Überlegungen.
Gruß! |