Private Type TmType
    lTmNo As Integer            
    siSum25 As Single         
End Type
Dim Tm As TmType
Dim A() As Byte请问怎么用CopyMemory把Tm 赋给A?
又怎样把A赋给TM?
谢谢

解决方案 »

  1.   

    CopyMemory A(0),ByVal VarPtr(Tm),LenB(Tm)
    CopyMemory A(0),Tm,LenB(Tm)
    CopyMemory ByVal VarPtr(A(0)),Tm,LenB(Tm)
    CopyMemory ByVal VarPtr(A(0)),ByVal VarPtr(Tm),LenB(Tm)
    都可以但是前提是声明必须是这样子
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
      

  2.   

    用CopyMemory A(0),ByVal VarPtr(Tm),LenB(Tm)
    A(0)下标越界呢,A数组的下标怎么定义?
      

  3.   

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Private Type TmType
        lTmNo As Integer
        siSum25 As Single
    End Type
    Dim Tm As TmType
    Dim Tm1 As TmType
    Dim A() As BytePrivate Sub Command1_Click()
    ReDim A(LenB(Tm) - 1)    CopyMemory A(0), ByVal VarPtr(Tm), LenB(Tm)    Print AEnd SubPrivate Sub Form_Load()
    Tm.lTmNo = 123
    Tm.siSum25 = 123.48
    End Sub运行后输出 { ??  这是否正常? 我要把A赋给TM1又应怎么做?谢谢
      

  4.   

    找资料后可以转换了
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Private Type TmType
        lTmNo As Integer
        siSum25 As Single
        StrName As String
    End Type
    Dim Tm As TmType
    Dim Tm1 As TmType
    Dim A() As BytePrivate Sub Command1_Click()
    ReDim A(LenB(Tm) - 1)    CopyMemory A(0), ByVal VarPtr(Tm), LenB(Tm)    Print A
        CopyMemory Tm1, A(0), LenB(Tm1)
        Print Tm1.lTmNo
        Print Tm1.siSum25
        Print Tm1.StrName
    End SubPrivate Sub Form_Load()
    Tm.lTmNo = 123
    Tm.siSum25 = 123.48
    Tm.StrName = "邓开开"
    End Sub
    Print Tm1.StrName 输出是乱码怎么办?
      

  5.   

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 
    Private Type TmType 
        lTmNo As Integer            
        siSum25 As Single        
    End Type 
    Dim Tm As TmType 
    Dim A() As Byte
    redim A(len(TmType)-1)
    CopyMemory A(0),TmType,Len(TmType)