MyException - 我的异常网
当前位置:我的异常网» VB » 怎么取得variant内含的数组的首元素的地址

怎么取得variant内含的数组的首元素的地址(5)

www.myexceptions.net  网友分享于:2013-04-10  浏览:3次

'*
'*           GetSafeArrayInfo (数组, 指定一个维数,[下标],[上标]
'*
'**************************************************************

    Dim ArrayHeaderAddress  As Long
    Dim DimensionCount As Integer     '维数计次

    CopyMemory ArrayHeaderAddress, ByVal VarPtr(AnyArray) + 8, 4
    CopyMemory ArrayHeaderAddress, ByVal ArrayHeaderAddress, 4              '获取数组头地址
   
    If ArrayHeaderAddress < 1 Then Exit Function

    CopyMemory DimensionCount, ByVal ArrayHeaderAddress, 2                  '获取数组维数

    If sDimension > DimensionCount Then Exit Function                       '若指定的维数大于实际维数则退出

    CopyMemory LowerBound, ByVal (ArrayHeaderAddress + 16 + (DimensionCount - sDimension) * 8) + 4, 4 '获取下标
    CopyMemory Elements , ByVal (ArrayHeaderAddress + 16 + (DimensionCount - sDimension) * 8), 4

                                                   '获取指定维数下的元素个数
    UpperBound = Elements + LowerBound - 1                                '获取指定维数下的上标
   
    CopyMemory Flags, ByVal ArrayHeaderAddress + 2, 2                       '获取数组属性
    CopyMemory cbElements, ByVal ArrayHeaderAddress + 4, 2                  '获取数组单个元素长度
    CopyMemory cLocks, ByVal ArrayHeaderAddress + 8, 2                      '获取数组锁定计数
    CopyMemory AddressOfData, ByVal ArrayHeaderAddress + 12, 4              '获取数组首元素地址
   
    GetSafeArrayInfo = ArrayHeaderAddress
 
End Function


文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有