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