那是肯定的
char是字符
string 是字符串(而且是不定长的)
用string * 20这样可以定长
试试吧

解决方案 »

  1.   

    定义为Byte数组
    再用StrConv转
      

  2.   

    直接String是绝对不行的
    VB的String实际上是BSTR
    是一个32Bit的指针
      

  3.   

    我看过相应的文章, 好像是说:
    vb           vc
    string       bstr or lpctstr
      

  4.   

    转换自定义结构到 Byte 后在传递,本来这是用来把自定义结构数组一次传递到控件中得办法,但我在VB 中直接使用 CopyMemory 传递就可以,不用下文这样麻烦,因为两端都是使用 api 操作,我想用于 vc 可能也可以利用内存拷贝实现转换说明,用VC编写内存拷贝函数,VB调用该函数,实现用户自定义数据结构与Byte数组的互相转换。用内存拷贝实现转换还须如下转换函数说明:
    实现Byte数组到用户自定义数据结构的转换函数Copy_BA
    Public Declare Function Copy_BA Lib "copymem.dll" (ByRef pByte As Byte, ByRef pData As myDATE, ByVal LONG cbSize) 
    实现用户自定义数据结构到Byte数组的转换函数Copy_AB
    Public Declare Function Copy_AB Lib " copymem.dll " (ByRef pData As myDATE, ByRef pByte As Byte, ByVal LONG cbSize) 
    其中copymem.dll为VC编写的动态连接库MaxLenB = LenB(typeA)
    其中LenB()为VB提供的函数,返回typeA在内存中的大小,包括元素之间的填塞。
    该例中 MaxLenB = 8
    ReDim bArray (MaxLenB) As Byte 
    实现用户自定义数据结构typeA到Byte数组bArray()的转换
    Call Copy_BA (bArray, typeA, MaxLenB) 
    实现Byte数组bArray()到用户自定义数据结构typeA的转换
    Call Copy_AB (typeA,bArray, MaxLenB)  (四) 用VC编写内存拷贝函数
    用以下两个函数编写成动态连接库:copymem.dll
    void __stdcall copy_BA(LONG pMem, LONG pSource, LONG cbSize)
    {
    memcpy((void*)pMem, (void*)pSource, cbSize);
    }
    void __stdcall copy_AB(LONG pMem, LONG pSource, LONG cbSize)
    {
    memcpy((void*)pMem, (void*)pSource, cbSize);
    }
      

  5.   

    如对数组进行批量操作
         用指针进行大批量数组数据的移动,看下面的程序,功能都是将数组的前一半数据移到后一半中:    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
               (ByVal dest As Long, ByVal source As Long, ByVal bytes As Long)
        Private Declare Sub ZeroMemory Lib "kernel32" Alias "RtlZeroMemory" _
               (ByVal dest As Long, ByVal numbytes As Long)
        Private Declare Sub FillMemory Lib "kernel32" Alias "RtlFillMemory" _
               (ByVal dest As Long, ByVal Length As Long, ByVal Fill As Byte)    Private Sub ShitArrayByPtr(ab() As MyTpye)
             Dim n As Long
             n = CLng(UBound(ab) / 2)
             Dim nLenth As Long
             nLenth = Len(Value(1))
             'DebugBreak
             CopyMemory ByVal VarPtr(Value(1 + n)), _
                        ByVal VarPtr(Value(1)), n * nLenth
             ZeroMemory ByVal VarPtr(Value(1)), n * nLenth
        End Sub
      

  6.   

    连两个结构的长度都不同
    失败是必然的
    VB中的string只是指针,32bit
    c的struct中包括字符