Совместимые типы данных VC++ <=> VB
От: Аноним  
Дата: 10.04.03 08:59
Оценка:
Начал осваивать СОМ, сделал компанент (VC++ 6, ATL)... но при попытке воспользоваться этим компонентом из VB он ругается, что тип данных с ним не совместимый. Какие типы данных можно юзать в интерфейсах, чтобы все было ок. Плиз помогите в освоении этого нелегкого дела.
Зарнее благодарен.
ЗЫ: О вот как интерфейс описан..
interface IXDBMComp : IDispatch
{
    [id(1), helpstring("...")] HRESULT Connect(int port, DWORD baud);
    [id(2), helpstring("...")] HRESULT Func03h( [in] BYTE devID, [in] WORD adr, [in] WORD size, [in] WORD* buff );
    [id(3), helpstring("...")] HRESULT Func06h( [in] BYTE devID, [in] WORD adr, [in] WORD data );
    [id(4), helpstring("...")] HRESULT Func10h( [in] BYTE devID, [in] WORD adr, [in] WORD size, [in] WORD* buff );
};
Re: Совместимые типы данных VC++ <=> VB
От: SergH Россия  
Дата: 10.04.03 09:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Начал осваивать СОМ, сделал компанент (VC++ 6, ATL)... но при попытке воспользоваться этим компонентом из VB он ругается, что тип данных с ним не совместимый. Какие типы данных можно юзать в интерфейсах, чтобы все было ок. Плиз помогите в освоении этого нелегкого дела.

А>Зарнее благодарен.
А>ЗЫ: О вот как интерфейс описан..
А>
А>interface IXDBMComp : IDispatch
А>{
А>    [id(1), helpstring("...")] HRESULT Connect(int port, DWORD baud);
А>    [id(2), helpstring("...")] HRESULT Func03h( [in] BYTE devID, [in] WORD adr, [in] WORD size, [in] WORD* buff );
А>    [id(3), helpstring("...")] HRESULT Func06h( [in] BYTE devID, [in] WORD adr, [in] WORD data );
А>    [id(4), helpstring("...")] HRESULT Func10h( [in] BYTE devID, [in] WORD adr, [in] WORD size, [in] WORD* buff );
А>};
А>


С целыми ты, наверное, разберёшься методом перебора (имхо — LONG, SHORT, BYTE, могу ошибаться), а вот массив нужен SAFEARRAY. Да, и поставь интерфейсу атрибут oleautomation, тогда, вроде, c неправильными тапами компилиться не будет.
Делай что должно, и будь что будет
Re: Совместимые типы данных VC++ <=> VB
От: Ivan Россия www.rsdn.ru
Дата: 10.04.03 09:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Начал осваивать СОМ, сделал компанент (VC++ 6, ATL)... но при попытке воспользоваться этим компонентом из VB он ругается, что тип данных с ним не совместимый. Какие типы данных можно юзать в интерфейсах, чтобы все было ок. Плиз помогите в освоении этого нелегкого дела.


Поставь интерфейсу атрибут "oleatomation" и тебе компилятор midl сам скажет, если какие-нибудь типы несовместимы

VB понимает: BSTR, long, VARIANT, указатели на интерфейсы (в принципе даже IUnknown подходит), SAFEARRAY, enum'ы и UDT (user defined types).

Подробнее см. MSDN про oleautomation типы.
Re: Совместимые типы данных VC++ <=> VB
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 10.04.03 09:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Какие типы данных можно юзать в интерфейсах, чтобы все было ок. Плиз помогите в освоении этого нелегкого дела.


http://www.rsdn.ru/article/?com/COMvs.xml
Автор(ы): Чистяков В.Ю.

Эта статья входит в цикл "COM vs. CORBA" и знакомит читателя с основами COM, начиная с интерфейса IUnknown
и заканчивая маршалингом, DCOM и COM+.
Re[2]: Совместимые типы данных VC++ <=> VB
От: Аноним  
Дата: 10.04.03 09:26
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, Аноним, Вы писали:


А>Какие типы данных можно юзать в интерфейсах, чтобы все было ок. Плиз помогите в освоении этого нелегкого дела.


OE>http://www.rsdn.ru/article/?com/COMvs.xml
Автор(ы): Чистяков В.Ю.

Эта статья входит в цикл "COM vs. CORBA" и знакомит читателя с основами COM, начиная с интерфейса IUnknown
и заканчивая маршалингом, DCOM и COM+.


Больше спасибо!
Re: Совместимые типы данных VC++ <=> VB
От: Артур Россия  
Дата: 10.04.03 09:37
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>ЗЫ: О вот как интерфейс описан..

А>
А>interface IXDBMComp : IDispatch
А>{
А>    [id(1), helpstring("...")] HRESULT Connect(int port, DWORD baud);
А>    [id(2), helpstring("...")] HRESULT Func03h( [in] BYTE devID, [in] WORD adr, [in] WORD size, [in] WORD* buff );
А>    [id(3), helpstring("...")] HRESULT Func06h( [in] BYTE devID, [in] WORD adr, [in] WORD data );
А>    [id(4), helpstring("...")] HRESULT Func10h( [in] BYTE devID, [in] WORD adr, [in] WORD size, [in] WORD* buff );
А>};
А>


А ты в Бейсике используешь позднее или раннее связывание?
... << RSDN@Home 1.0 beta 6a >>
Re[2]: Совместимые типы данных VC++ <=> VB
От: Аноним  
Дата: 10.04.03 09:39
Оценка:
Здравствуйте, Артур, Вы писали:

А>А ты в Бейсике используешь позднее или раннее связывание?


Раннее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.