Re[5]: Как передать массив объектов (c# .net) в c++ (com)
От: GlebZ Россия  
Дата: 13.10.05 16:12
Оценка:
Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.