我一直试图弄清楚为什么下面的函数在返回时会抛出一个错误,上面写着“Type Mismatch”。根据我对VB6的了解,这应该没有任何问题,但显然没有。任何人都可以看到我在这里做错了,让我知道如何解决它?提前谢谢。
Private Function GetByteArray(source As Variant, index As Integer, length As Integer) As Variant
Dim buff() As Byte
ReDim buff(0 To length - 1)
Dim i As Integer
For i = 0 To length - 1
buff(i) = CByte(source(index + i))
Next i
GetByteArray = buff
End Function
答案 0 :(得分:1)
事实证明,问题与我发布的功能没有任何关系,而是与我对结果的处理有关。我正在使用该方法获取double的字节,然后使用CDbl获取double值。这就是错误真正发生的地方。
我应该这样做的方法是使用以下代码:
CopyMemory rfcTest.rfcFloat, GetByteArray(buff, 0, 8), Len(rfcTest.rfcFloat)
请注意,为了使用它,您还必须像这样声明CopyMemoryMethod:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)