我使用我的程序访问一个COM对象(在我的示例中为CANoe)并调用方法get_Value来获取COM对象中变量的值。指针pVariable是指向变量的COM对象的指针:
VARIANT variable;
result = pVariable->get_Value(&variable);
要使用c ++中的值,我想将VARIANT变量中的值保存在整数变量中。如何将VARIANT变量中的值转换为整数变量?
答案 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值。