1,486
社区成员
发帖
与我相关
我的任务
分享
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal dest As Long, ByVal Source As Long, ByVal bytes As Long)
Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Var() As Any) As Long
Private Sub Command1_Click()
Dim ppMyArr As Long, pMyArr As Long, nDims As Long
Dim MyArr(1 To 8, 2 To 10) As Long
'先得到一个指向SafeArray结构的指针的指针,原理是什么,我后面说。
ppMyArr = VarPtrArray(MyArr)
'从这个指针的指针得到SafeArray结构的指针
CopyMemory pMyArr, ByVal ppMyArr, 4
'再从这个指针所指地址的头两个字节取出cDims
CopyMemory nDims, ByVal pMyArr, 2
MsgBox "这个数组有" & nDims & "维"
End Sub