-1

我一直在试图弄清楚为什么下面的函数在返回时会抛出“类型不匹配”的错误。根据我对 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
4

1 回答 1

1

事实证明,这个问题与我发布的函数没有任何关系,而是与我对结果所做的事情有关。我正在使用该方法获取双精度的字节,然后使用 CDbl 获取双精度值。这是错误真正发生的地方。

我应该这样做的方法是使用以下代码:

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)
于 2013-04-12T20:40:36.317 回答