Vb6.0 Variant 在 Vb.net 中 Object 的问题
Vb6.0代码如下:Const DATASIZE = 459
Dim glngEnrollData As Variant
Dim vnii As Long
Dim vByte() As Byte
astrBuff= Rs.Fields("TEMP") '2进制字段
vByte = astrBuff
For vnii = 0 To DATASIZE - 1
glngEnrollData(vnii) = vByte(vnii * 5 + 1)
glngEnrollData(vnii) = glngEnrollData(vnii) * 256 + vByte(vnii * 5 + 2)
glngEnrollData(vnii) = glngEnrollData(vnii) * 256 + vByte(vnii * 5 + 3)
glngEnrollData(vnii) = glngEnrollData(vnii) * 256 + vByte(vnii * 5 + 4)
If vByte(vnii * 5) = 0 Then
glngEnrollData(vnii) = 0 - glngEnrollData(vnii)
End If
Next
vb6.0中运行没有问题
但在Vb.net中代码
Const DATASIZE = 459
Dim glngEnrollData As object
Dim vnii As Long
Dim vByte() As Byte
'astrBuff= Rs.Fields("TEMP").value '2进制字段
Dim astrBuff As String = Rs.Fields("TEMPLATE").Value.ToString
Dim vByte() As Byte = System.Text.Encoding.Default.GetBytes(astrBuff)
For vnii = 0 To DATASIZE - 1
glngEnrollData(vnii) = vByte(vnii * 5 + 1) '执行在这里出现 未处理 System.NullReferenceException Message="未设置对象变量或 With 块变量。"错误
glngEnrollData(vnii) = glngEnrollData(vnii) * 256 + vByte(vnii * 5 + 2)
glngEnrollData(vnii) = glngEnrollData(vnii) * 256 + vByte(vnii * 5 + 3)
glngEnrollData(vnii) = glngEnrollData(vnii) * 256 + vByte(vnii * 5 + 4)
If vByte(vnii * 5) = 0 Then
glngEnrollData(vnii) = 0 - glngEnrollData(vnii)
End If
Next
请教,在vb.net中,我该怎么修改,不胜感激!!!!!!
--------------------编程问答-------------------- Dim glngEnrollData As object 改成:
Dim glngEnrollData(DATASIZE - 1) As Long --------------------编程问答-------------------- 谢谢你的回答
但我将Dim glngEnrollData As object 改成:
Dim glngEnrollData(DATASIZE - 1) As Long 或者 Dim glngEnrollData(DATASIZE - 1) As byte 都不行
执行到 glngEnrollData(vnii) = vByte(vnii * 5 + 1) 这里就直接死掉了
--------------------编程问答--------------------
Dim glngEnrollData(DATASIZE - 1) As Long 还出错,估计是vByte数组上限溢出了吧。你跟踪下或在循环前加入以下的判断就知道了:
If vByte.Length < (DATASIZE - 1) * 5 + 4 Then
MsgBox("vByte中数据太少,无法进行计算。")
End If
补充:.NET技术 , VB.NET