在我的VB.NET應用程序中,我使用了一個來自.dll的函數,它會給我一個字符串。 當調用該函數時,回調會給出該字符串的長度和地址,而不是字符串本身。來自VB.NET地址的字符串
我嘗試使用此代碼來獲取字符串,但我認爲這是針對VB的經典,而不是爲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
我得到4個錯誤,我不知道如何擺脫其中:
- '。'預期(用於字符串第5行)
- 「字符串」是一個類類型,不能用作表達式(對於第5行)
- 表達預期的(用於BYVAL第6行)
- 表達預期的(對第6行爲ByVal)
對不起,如果我的問題很蠢。我在編程起動器和VB.NET
什麼我可以幫助你:刪除'ByVal'。 –
完整的例子是如何使用這個在這裏:http://www.pinvoke.net/default.aspx/urlmon/CopyMemory.html –
在看了一個VB6文檔後,'String()'函數只是創建一個字符串填充與指定數量的特定字符一起使用。你應該能夠刪除這條線沒有任何問題。 –