In meiner VB.NET-Anwendung verwende ich eine Funktion von einer DLL, die mir eine Zeichenfolge geben soll. Beim Aufruf der Funktion gibt mir der Callback die Länge dieser Zeichenfolge und eine Adresse anstelle der Zeichenfolge selbst.String aus der Adresse in VB.NET
Ich habe versucht, die Zeichenfolge mit diesem Code zu bekommen, aber ich denke, es ist für VB klassischen gemeint war, nicht für VB.NET:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Object, ByVal Source As Object, ByVal Length As Long)
Private Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As Long
Private Function pvToString(ByVal lPtr As Long) As String
If lPtr <> 0 Then
pvToString = String(lstrlenA(lPtr), 0)
Call CopyMemory(ByVal pvToString, ByVal lPtr, Len(pvToString))
End If
End Function
I 4 Fehler bekommen, und ich weiß nicht, wie loswerden von ihnen:
- '.' erwartet (für die Leitung 5 für String)
- 'String' ist eine Typ-Klasse und nicht als Ausdruck verwendet werden kann (Zeile 5)
- Expression erwartet (für die Leitung 6 für ByVal)
- Expression erwartet (für Zeile 6 für ByVal)
Sorry, wenn meine Frage dumm ist. Ich bin ein Starter in der Programmierung und VB.NET
Was Ich kann dir helfen mit: Entferne die 'ByVal's. –
Volles Beispiel, wie man das benutzt, ist hier: http://www.pinvoke.net/default.aspx/urlmon/CopyMemory.html –
Nach dem Betrachten einer VB6-Dokumentation, die 'String()' Funktion erstellt nur eine Zeichenfolge gefüllt mit der angegebenen Menge eines bestimmten Zeichens. Sie sollten diese Zeile ohne Probleme entfernen können. –