Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |
Спасибо за мнение. 31.10.05 22:24 Число просмотров: 2071
Автор: void <Grebnev Valery> Статус: Elderman
|
Спасибо за мнение.
> не мешает сделать FillMemory(&varIndex, > sizeof(varIndex), 0).
Думаю, для обсуждаемого случая можно и не делать. В вызове аналогичному тому, что выше, а именно типа:
for ( int i = 0; i < cItems; i ++ )
{
HRESULT hr =pISomeInterface->get_Item( CComVariant ( long (i) ), &Ifld ) ;
<skip>
}
В конструкторе CComVariant ( long (i) ) не будет зваться ни ::VariantInit, ни FillMemory ....
|
<programming>
|
[c++] простой вопрос о variant 30.10.05 06:32
Автор: void <Grebnev Valery> Статус: Elderman
|
Во всех статьях Microsoft строго наказано, да и просто в форумах, практически все используют ::VariantInit для любых типов данных, инкапсулируемых в VARIANT.
Но вот вопрос ... почему бы не обойтись в простых случаях без этого вызова, когда передаютсяпростыеданные, например, типа long, int и т.д?
Например, у COM интерфейса есть некий метод get_Item ( VARIANT index /* long */, ... ).
Почему бы не поставить // коментарий в коде:
for ( int i = 0; i < cItems; i ++ )
{
VARIANT varIndex;
//::VariantInit( &varIndex );
varIndex.vt = VT_I4;
varIndex.lVal = long ( i );
HRESULT hr =pISomeInterface->get_Item( varIndex, &Ifld ) ;
<skip>
}
Спаcибо.
|
 |
Никто не мешает но во избежании недоразумений перед... 31.10.05 11:31
Автор: Гость Статус: Незарегистрированный пользователь
|
> Во всех статьях Microsoft строго наказано, да и просто в > форумах, практически все используют ::VariantInit для любых > типов данных, инкапсулируемых в VARIANT. > Но вот вопрос ... почему бы не обойтись в простых случаях > без этого вызова, когда передаютсяпростыеданные, > например, типа long, int и т.д? > > Например, у COM интерфейса есть некий метод get_Item ( > VARIANT index /* long */, ... ). > > Почему бы не поставить // коментарий в коде: > > for ( int i = 0; i < cItems; i ++ ) > { > VARIANT varIndex; > //::VariantInit( &varIndex ); > > varIndex.vt = VT_I4; > varIndex.lVal = long ( i ); > > HRESULT hr =pISomeInterface->get_Item( varIndex, > &Ifld ) ; > > <skip> > } > > > Спаcибо.
Никто не мешает но во избежании недоразумений перед инициализацией полей
не мешает сделать FillMemory(&varIndex, sizeof(varIndex), 0).
|
 |  |
Спасибо за мнение. 31.10.05 22:24
Автор: void <Grebnev Valery> Статус: Elderman
|
Спасибо за мнение.
> не мешает сделать FillMemory(&varIndex, > sizeof(varIndex), 0).
Думаю, для обсуждаемого случая можно и не делать. В вызове аналогичному тому, что выше, а именно типа:
for ( int i = 0; i < cItems; i ++ )
{
HRESULT hr =pISomeInterface->get_Item( CComVariant ( long (i) ), &Ifld ) ;
<skip>
}
В конструкторе CComVariant ( long (i) ) не будет зваться ни ::VariantInit, ни FillMemory ....
|
|
|