CString VarToString(_variant_t var) // _variant是一种COM中使用的变体数据类型(可保存任意数据类型的数据)
{
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);
if ( da.GetHour() == 0 &&
da.GetMinute() == 0 &&
da.GetSecond() == 0)
{
strValue = da.Format("%Y年%m月%d日");
}
else
{
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;
}