获得VARIANT的值到int

时间:2014-01-07 15:44:06

标签: c++ com variant

我使用我的程序访问一个COM对象(在我的示例中为CANoe)并调用方法get_Value来获取COM对象中变量的值。指针pVariable是指向变量的COM对象的指针:

 VARIANT variable; 
 result = pVariable->get_Value(&variable);

要使用c ++中的值,我想将VARIANT变量中的值保存在整数变量中。如何将VARIANT变量中的值转换为整数变量?

3 个答案:

答案 0 :(得分:4)

确保获得正确的整数值后,只需访问变量值即可。像这样:

 VARIANT variable; 
 HRESULT hr = pVariable->get_Value(&variable);
 if (SUCCEEDED(hr)) hr = VariantChangeType(&variable, &variable, 0, VT_I4);
 if (SUCCEEDED(hr)) this->Yadayada = variable.lVal;
 else ReportFailure(hr);

答案 1 :(得分:2)

OleAuto.h 中有很多变体访问宏。获得值后,应确保其类型正确。然后你可以阅读它:

int value;

if (V_VT(variable) == VT_INT)
{
    value = V_INT(variable);
}

为变体定义了几种整数类型。请查看 wtypes.h 并检查当前变体对象中存储的实际类型,并使用相应的V_xxx宏。

答案 2 :(得分:0)

这取决于您所谈论的变体类型。例如,如果您尝试转换为整数,则包含日期值的变体可能会失败。

HRESULT hr = VariantChangeType (&VariantDest, &VariantSource, 0, VT_I4);
long t = VariantSource.lVal;

不要忘记检查HRESULT值。