如何取得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.