Есть обект коллекция (часть компонента написанного на 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>>