Здравствуйте, endri, Вы писали:
E>Здравствуйте, GlebZ, Вы писали:
GZ>>Попробуй сделать указатель на массив указателей на структуры
GZ>>GZ>>UserInfo** pUserStruct = NULL; // UserInfo - структура, описанная в библиотеке типов(см. выше)
GZ>>
E>Я не совсем понял что мне с этим указателем на массив делать дальше?
SAFEARRAY* psa;
pITestComponent->Users(1,&psa); // Users - функция, возвращающая массив UserInfo[]
UserInfo** pUserStruct = NULL; // UserInfo - структура, описанная в библиотеке типов(см. выше)
if (psa != NULL)
{
hr = SafeArrayAccessData(psa, (void**)&pUserStruct);
_ASSERT(SUCCEEDED(hr) && pUserStruct);
// здесь используем полученный массив структур pUserStruct, но он заполнен НЕ КОРРЕКТНО
long uBound;
long lBound;
hresult = SafeArrayGetUBound(psa, 1, &uBound);
if(FAILED(hresult))
return hresult;
hresult = SafeArrayGetLBound(psa, 1, &lBound);
if(FAILED(hresult))
return hresult;
for (long i=lBound;l<=uBound;l++)
MessageBoxW(NULL, (*pUserStruct)->_firstName, L"", MB_OK);
hr = ::SafeArrayUnaccessData(psa);
_ASSERT(SUCCEEDED(hr));
}
SafeArrayDestroy(psa);
Так более понятно?
С уважением, Gleb.