Re[2]: Использование com коллекций написанных на visual bas
От: sammael  
Дата: 27.01.06 09:16
Оценка:
Здравствуйте, Vi2, Вы писали:

Vi2>Здравствуйте, sammael, Вы писали:



Vi2>У тебя проблемы с инициализацией VARIANT-ов: перед передачей их в VB, нужно им присвоить какие-нибудь начальные данные.

Vi2>В первом случае каждому элементу arrVariant присвоить arrVariant[i].vt = VT_EMPTY или вызвать VariantInit(arrVariant + i).
Vi2>Во втором случае нужно присвоить тип значения в VARIANT v.vt = VT_I4.
Vi2>Именно поле vt варианта отвечает за то, инициализирован ли он и что хранит. Если там будет случайное число, то и сообщения об ошибках будут разнообразными.

Спасибо, что объяснил
оказалось чуть-чуть подругому:
routes1->NewEnum()->QueryInterface(envar,(void**)&varArg);


for(int i =0;i<countRoutes;i++)
{
CGPSRoute r;
arrVariant.vt=VT_I4;
hr=varArg->Next(1, &arrVariant, &nReturned);

//Раньше здесь обращался к методу Item, теперь понял что в variant
//возвращается Dispatch интерфейс
r.AttachDispatch(arrVariant.pdispVal);
out<<r.get_Number()<<" "<<r.get_Identifier()<<" "<<r.get_Comment()<<" "<<endl;
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.