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

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

www.myexceptions.net  网友分享于:2013-04-10  浏览:3次
如何取得variant内含的数组的首元素的地址
r...........t

------解决方案--------------------
'---------------------------------------------------
' 过程名    : TestVariant
' 时间      : 2013/3/30
' 作者      : 杨过.网狐.cn(csdn bcrun)
' 功能      :
' 说明      :
' 备注      : 星辰设计室VB一群:283362041,星辰学园BASIC辅导群:289219875
'---------------------------------------------------
Public Sub TestVariant()
    Dim arrVar As Variant
    Debug.Print TypeName(arrVar)
    arrVar = Array("a1", "b2", "c3")
    Debug.Print TypeName(arrVar)
    Debug.Print TypeName(arrVar(LBound(arrVar)))
    Debug.Print VarPtr(arrVar(LBound(arrVar)))  '数组的首元素的地址
    
End Sub

------解决方案--------------------
这不能跟C语言相比,VB的数组是安全数组,实际地址是有偏移的。
参考下面:http://blog.csdn.net/laviewpbt/article/details/4216686
------解决方案--------------------
那要自己解析Variant的结构.....有点多,太麻烦了哈哈.

typedef struct FARSTRUCT tagVARIANT VARIANT;
typedef struct FARSTRUCT tagVARIANT VARIANTARG;

typedef struct tagVARIANT  {
    VARTYPE vt;
    unsigned short wReserved1;
    unsigned short wReserved2;
    unsigned short wReserved3;
    union {
        unsigned char        bVal;                        // VT_UI1.
        short                    iVal;                        // VT_I2    .
        long                    lVal;                        // VT_I4    .
        float                    fltVal;                    // VT_R4    .
        double                dblVal;                    // VT_R8    .
        VARIANT_BOOL        boolVal;                        // VT_BOOL.

文章评论

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