Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Направления программирования
>
Техно
> Тема:
COM-server & VB-client
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: COM-server & VB-client (Прочитано 7077 раз)
0 Пользователей и 1 Гость смотрят эту тему.
FantomCat
Гость
COM-server & VB-client
«
:
19-09-2003 15:48 »
Здавствуйте!
Люди, помогите пожалуйста!
У меня такая трабла. Есть у меня мой СОМ-сервер. Один из его методов возвращает массив VARIANT'ов. В идле этот кусок прототипа выглядит так
HRESULT GetData([in]TDat tab,[in,string]char* fields,[out]int *rows,[out]int *total, [out,size_is(,*total)] VARIANT **pArr);
В срр-клиенте все работает просто прекрасно. Но есть у этого сервера и бейсиковский клиент, и вот бейсик на VARIANT **pArr ругается, как на неподдерживаемый тип (именно на это! Проверено множеством способов).
Я уже для бейсиковского клиента другой интерфейс завела, чтобы память клиент аллокатил, ну и прототип немного другой стал
HRESULT GetData([in]int total,[out,size_is(total)]VARIANT *pArr);
В басиковской проге нормально делаю Dim (ReDim).
Но в этом случае я ничего в сервере не могу сделать ни с каким элементом массива, вылетает с Automatization error.
Так вот даже если сделать этот массив входным, сервер не может продуплить с типами вариантов, ну и соответственно с последствиями.
Просто указатель на вариант замечательно маршалится, как на вход, так и на выход.
Люди! Помогите, плз! Ну хотя бы идеями! Два дня лбом об монитор стукаюсь.
З.Ы.
Если в идле сделать
typedef VARIANT VARARR[500];//хотя размер может у меня быть как намного больше, так и намного меньше.(в общем низзя так)
то опять вылетает с неподдерживаемым типом 8-(
Записан
NetRaider
Гость
COM-server & VB-client
«
Ответ #1 :
19-09-2003 22:43 »
Покажи idl и VB код, где происходит объявление массива и вызов метода. А "Automatization error" в каком месте вылетает ? и что возвращает GetLastError() ?
Записан
FantomCat
Гость
COM-server & VB-client
«
Ответ #2 :
20-09-2003 09:27 »
Зашибиться можно!
Ненавижу прикладнуху! И особенно хорошо это понимаю, когда проблема разрешилась.
В idl все было нормально. А вот басику при вызове метода оказывается нужно было передавать 0-й элемент массива!
Зачем же так указатели прятать?!
NetRaider, спасибо тебе большое за отзывчивость!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Направления программирования
>
Техно
> Тема:
COM-server & VB-client
Загружается...