_variant_t的用法

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; 
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值