2017-07-15 54 views
0

嘿所有我想VB6的一點點轉換爲.NET和我得到的錯誤:VB6到VB.NET CopyMemory的

「」類型的未處理的異常出現在Microsoft.VisualBasic.dll

其他信息:從字符串「」轉換爲「整數」類型無效。

以下.NET代碼的地方卡住在CopyMemory的(str_Renamed,PTR,計數)

Public Function ptrToStr(ByVal ptr As Integer) As String 
Dim count As Integer 
Dim str_Renamed As String 

    count = lstrlen(ptr) 

    If count Then 
     str_Renamed = New String(vbNullChar, count) 
     CopyMemory(str_Renamed, ptr, count) 
     ptrToStr = str_Renamed 
    Else 
     ptrToStr = "" 
    End If 
End Function 

這些可變因素的值是:

count  = 4 
ptr   = 268978536 
str_Renamed = " " 

我'不知道如何去解決這個錯誤...

+0

像這樣的東西通常最好留給編組,例如。 Marshal.PtrToStringAnsi/Auto() –

+0

這可能是代碼轉換不是一個好習慣的例子。如果你發現原始代碼試圖完成什麼,有可能會有更好更容易的.NET方法來完成沒有任何指針/ CopyMemory內容的等效方法。 – DaveInCaz

回答

0

問題看起來是你是pa將一個字符串作爲CopyMemory函數的第一個參數。 CopyMemory函數需要一個指針作爲第一個參數,因此代碼試圖將字符串參數轉換爲整數。據我所知,指針的唯一有效值是整數值或十六進制值。