不能用String
这与VB的String很特殊有关
VB的变长字符串变量实际上是一个32位的指针,指向字符串数据区
字符串数据区的前四个字节是字符串的长度
然后是字符串数据,注意VB的字符串是UniCode格式的,一个字符占两个字节
最后还有两个为0的字节,是为了传递字符串给UniCode字符串格式的API而特地加的。表字符串结束,但用Mid函数等VB内部函数都会屏蔽“最后还有两个为0的字节”的内容

解决方案 »

  1.   

    http://www.csdn.net/develop/author/netauthor/AdamBear/
      

  2.   

    问题终于解决了,原来是我的失误,在对第二个结构赋值勤的时候多加一个元素    CopyMemory baSafe, ByVal baAddr, 4
        CopyMemory ByVal baSafe, ByVal VarPtr(a1), LenB(a1)
        Debug.Print UBound(ba) ''正确
        CopyMemory ByVal VarPtr(a2), ByVal baSafe, LenB(a2) + 1 ''错误,应该是 LenB(a2)
        Debug.Print UBound(ba) ''错误