如何在vb6中将字节数组作为变量返回

时间:2013-04-12 15:43:39

标签: vb6 bytearray variant

我一直试图弄清楚为什么下面的函数在返回时会抛出一个错误,上面写着“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

1 个答案:

答案 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)