【发布时间】:2017-12-20 05:42:47
【问题描述】:
大家好,我正在尝试将一点点 VB6 转换为 .NET,但出现以下错误:
Microsoft.VisualBasic.dll 中出现“System.InvalidCastException”类型的未处理异常
附加信息:从字符串“”到类型“整数”的转换无效。
以下 .net 代码卡在 CopyMemory(str_Renamed, ptr, count):
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 = " "
我不知道如何解决这个错误...
【问题讨论】:
-
这样的东西通常最好留给编组器,例如Marshal.PtrToStringAnsi/Auto()
-
这可能是代码转换不是一个好习惯的例子。如果您发现原始代码总体上试图完成什么,那么将有一种更好、更简单的 .NET 方法来完成等效操作,而无需任何指针/CopyMemory 的东西。
标签: vb.net vb6 copymemory