информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыВсе любят медСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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 ....
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach