Использование com коллекций написанных на visual basic в c+
От: sammael  
Дата: 27.01.06 06:58
Оценка:
Есть обект коллекция (часть компонента написанного на visual basic)
в basic для доступа к элементам используется конструкция foreach

Объект поддерживает интерфейс IEnumVARIANT
методы
int Count — к-во элементов коллекции
object* Item([in] VARIANT Index);
IUnknown* NewEnum();

пытаюсь воспользоватся из c++:

VARIANT *arrVariant = new VARIANT[countRoutes];
ULONG nReturned = 0;


IEnumVARIANT *varArg;
HRESULT hr = E_UNEXPECTED;
routes1->NewEnum()->QueryInterface(__uuidof(IEnumVARIANT),(void**)&varArg);
//Запрашиваю нужное мне колличество элементов
hr=varArg->Next(countRoutes, arrVariant, &nReturned);
//здесь hr = -2147352568 (неверный тип переменной)


for(int i =0;i<countRoutes;i++)
{
VARIANT v;
v.intVal=i;

CGPSRoute r;
//Здесь происходит исключение
//Текст ошибки: Variable uses an Automation type not supported in Visual Basic
r.AttachDispatch(routes1->Item(v));
}

Мне интересно как оборачивает basic конструкцию foreach
и как можно получить доступ к элементу коллекции из с++
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.