_variant_t的用法

来源:互联网 发布:淘宝卖家怎么被骗的 编辑:程序博客网 时间:2024/06/03 11:08

vc _variant_t的用法

分类: VC
先用void    _variant_t::Attach(    VARIANT&    varSrc     
然后用下面的来转换 
COleDateTime    vartodate(const   _variant_t&    var) 
COleDateTime    value; 
switch    (var.vt)   
case    VT_DATE: 
value      var.date; 
break; 
case    VT_EMPTY: 
case    VT_NULL: 
value.SetStatus(COleDateTime::null); 
break; 
default: 
value.SetStatus(COleDateTime::null); 
TRACE(_T("Warning:    未处理的    _variant_t    类型值;   文件:    %s;    行:    %d\n"),    __FILE__,    __LINE__); 
return    value; 

COleCurrency    vartocy(const    _variant_t&    var) 
COleCurrency    value; 
switch    (var.vt)   
case    VT_CY: 
value      (CURRENCY)var.cyVal; 
break; 
case    VT_EMPTY: 
case    VT_NULL: 
value.m_status      COleCurrency::null; 
break; 
default: 
value.m_status      COleCurrency::null; 
TRACE(_T("Warning:    未处理的    _variant_t    类型值;   文件:    %s;    行:    %d\n"),    __FILE__,    __LINE__); 
return    value; 

bool    vartobool(const    _variant_t&    var) 
bool    value      false; 
switch    (var.vt) 
case    VT_BOOL: 
value      var.boolVal      true     false; 
case    VT_EMPTY: 
case    VT_NULL: 
break; 
default: 
TRACE(_T("Warning:    未处理的    _variant_t    类型值;   文件:    %s;    行:    %d\n"),    __FILE__,    __LINE__); 
return    value; 

BYTE    vartoby(const    _variant_t&    var) 
BYTE    value      0; 
switch    (var.vt) 
case    VT_I1: 
case    VT_UI1: 
value      var.bVal; 
break; 
case    VT_NULL: 
case    VT_EMPTY: 
value      0; 
break; 
default: 
TRACE(_T("Warning:    未处理的    _variant_t    类型值;   文件:    %s;    行:    %d\n"),    __FILE__,    __LINE__); 
return    value; 

short    vartoi(const    _variant_t&    var) 
short    value      0; 
switch    (var.vt) 
case    VT_BOOL: 
value      var.boolVal; 
break; 
case    VT_UI1: 
case    VT_I1: 
value      var.bVal; 
break; 
case    VT_I2: 
case    VT_UI2: 
value      var.iVal; 
break; 
case    VT_NULL: 
case    VT_EMPTY: 
value      0; 
break; 
default: 
TRACE(_T("Warning:    未处理的    _variant_t    类型值;   文件:    %s;    行:    %d\n"),    __FILE__,    __LINE__); 
return    value; 

long    vartol(const    _variant_t&    var) 
long    value      0; 
switch    (var.vt) 
case    VT_BOOL: 
value      var.boolVal; 
break; 
case    VT_UI1: 
case    VT_I1: 
value      var.bVal; 
break; 
case    VT_UI2: 
case    VT_I2: 
value      var.iVal; 
break; 
case    VT_I4: 
case    VT_UI4: 
value      var.lVal; 
break; 
case    VT_INT: 
value      var.intVal; 
break; 
case    VT_R4: 
value      (long)(var.fltVal      0.5); 
break; 
case    VT_R8: 
value      (long)(var.dblVal      0.5); 
break; 
case    VT_DECIMAL: 
value      (long)var; 
break; 
case    VT_CY: 
value      (long)var; 
break; 
case    VT_BSTR://字符串 
case    VT_LPSTR://字符串 
case    VT_LPWSTR://字符串 
value      atol((LPCTSTR)(_bstr_t)var); 
break; 
case    VT_NULL: 
case    VT_EMPTY: 
value      0; 
break; 
default: 
TRACE(_T("Warning:    未处理的    _variant_t    类型值;   文件:    %s;    行:    %d\n"),    __FILE__,    __LINE__); 
return    value; 

double    vartof(const    _variant_t&    var) 
double    value      0; 
switch    (var.vt) 
case    VT_R4: 
value      var.fltVal; 
break; 
case    VT_R8: 
value      var.dblVal; 
break; 
case    VT_DECIMAL: 
value      (double)var; 
break; 
case    VT_CY: 
value      (double)var; 
break; 
case    VT_BOOL: 
value      var.boolVal; 
break; 
case    VT_UI1: 
case    VT_I1: 
value      var.bVal; 
break; 
case    VT_UI2: 
case    VT_I2: 
value      var.iVal; 
break; 
case    VT_UI4: 
case    VT_I4: 
value      var.lVal; 
break; 
case    VT_INT: 
value      var.intVal; 
break; 
case    VT_BSTR://字符串 
case    VT_LPSTR://字符串 
case    VT_LPWSTR://字符串 
value      atof((LPCTSTR)(_bstr_t)var); 
break; 
case    VT_NULL: 
case    VT_EMPTY: 
value      0; 
break; 
default: 
value      0; 
TRACE(_T("Warning:    未处理的    _variant_t    类型值;   文件:    %s;    行:    %d\n"),    __FILE__,    __LINE__); 
return    value; 

CString    vartostr(const    _variant_t    &var) 
CString    strValue; 

switch    (var.vt) 
case    VT_BSTR://字符串 
case    VT_LPSTR://字符串 
case    VT_LPWSTR://字符串 
strValue      (LPCTSTR)(_bstr_t)var; 
break; 
case    VT_I1: 
case    VT_UI1: 
strValue.Format("%d",    var.bVal); 
break; 
case    VT_I2://短整型 
strValue.Format("%d",    var.iVal); 
break; 
case    VT_UI2://无符号短整型 
strValue.Format("%d",    var.uiVal); 
break; 
case    VT_INT://整型 
strValue.Format("%d",    var.intVal); 
break; 
case    VT_I4:    //整型 
strValue.Format("%d",    var.lVal); 
break; 
case    VT_I8:    //长整型 
strValue.Format("%d",    var.lVal); 
break; 
case    VT_UINT://无符号整型 
strValue.Format("%d",    var.uintVal); 
break; 
case    VT_UI4:    //无符号整型 
strValue.Format("%d",    var.ulVal); 
break; 
case    VT_UI8:    //无符号长整型 
strValue.Format("%d",    var.ulVal); 
break; 
case    VT_VOID: 
strValue.Format("%8x",    var.byref); 
break; 
case    VT_R4://浮点型 
strValue.Format("%.4f",    var.fltVal); 
break; 
case    VT_R8://双精度型 
strValue.Format("%.8f",    var.dblVal); 
break; 
case    VT_DECIMAL:    //小数 
strValue.Format("%.8f",    (double)var); 
break; 
case    VT_CY: 
COleCurrency    cy      var.cyVal; 
strValue      cy.Format(); 
break; 
case    VT_BLOB: 
case    VT_BLOB_OBJECT: 
case    0x2011: 
strValue      "[BLOB]"; 
break; 
case    VT_BOOL://布尔型 

strValue      var.boolVal      "TRUE"      "FALSE"; 
break; 
case    VT_DATE:    //日期型 
DATE    dt      var.date; 
COleDateTime    da      COleDateTime(dt);   
strValue      da.Format("%Y-%m-%d    %H:%M:%S"); 
break; 
case    VT_NULL://NULL值 
strValue      ""; 
break; 
case    VT_EMPTY://空 
strValue      ""; 
break; 
case    VT_UNKNOWN://未知类型 
default: 
strValue      "UN_KNOW"; 
break; 
return    strValue; 
}
原创粉丝点击