Private Type TmType
lTmNo As Integer
siSum25 As Single
End Type
Dim Tm As TmType
Dim A() As Byte请问怎么用CopyMemory把Tm 赋给A?
又怎样把A赋给TM?
谢谢
lTmNo As Integer
siSum25 As Single
End Type
Dim Tm As TmType
Dim A() As Byte请问怎么用CopyMemory把Tm 赋给A?
又怎样把A赋给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)
A(0)下标越界呢,A数组的下标怎么定义?
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又应怎么做?谢谢
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 输出是乱码怎么办?
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)