Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Передача массива с COM-сервера


Автор: Mike_1981 5.9.2007, 13:41
Есть такая задача - необходимо передать с COM-сервера массив структур, содержащих инфу о юзерах. Структура такая (idl-файл):
Код

typedef struct tagNetUserStruct
{
    BSTR m_Surname;
    BSTR m_Name;
    BSTR m_Patronymic;
    BSTR m_Group;
    int m_Sex;
    long m_Birth_time;
} NetUserStruct;


Метод, занимающейся собственно пересылкой (idl-файл):
Код

interface IUserManager : IDispatch{
    [id(2), helpstring("method GetAllUsers")] HRESULT GetAllUsers([ in ] long num, [ out, size_is (num) ]  NetUserStruct cur_users[]);

реализация метода в cpp-файле:
Код

 ...
 //здесь идет заполнение массива result
memcpy ( cur_users, result, num * sizeof( NetUserStruct ) );

Здесь в cur_users лежит все, что надо.

На стороне клиента вызываем метод:
Код

NetUserStruct res_us[9];
long num_us = 9;
HRESULT hr = user_man->GetAllUsers( num_us, res_us );


В итоге в res_us оказывается всего один элемент массива, все поля структуры верные. В чем может быть дело?

Автор: Mike_1981 6.9.2007, 09:51
проблема исчезла после того, как полностью заново пересоздал проект

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)