OberonCore https://forum.oberoncore.ru/ |
|
COM автоматизация https://forum.oberoncore.ru/viewtopic.php?f=81&t=6303 |
Страница 1 из 1 |
Автор: | bl.beard [ Суббота, 03 Ноябрь, 2018 03:01 ] |
Заголовок сообщения: | COM автоматизация |
Добрый день! Пытаюсь написать маленькую автоматизацию с использованием COM сервера. Правильно ли я понимаю что для того чтобы использовать COM сервер - нужно сначала сгенерировать для него интерфейсный модуль? Вызвал инструмент COM-Type Libraries, нашел нужный мне сервер в списке "Type Library", дальше "Generate Automation interface". Но откомпилировать его не получается: получаю множество ошибок и первая в списке: "illegal sys flag". Попытка найти подсказки во встроенном хелпе и гугле ничего не дала. Вложение: Подскажите, пжст, как исправить. Спасибо. |
Автор: | Илья Ермаков [ Суббота, 03 Ноябрь, 2018 12:32 ] |
Заголовок сообщения: | Re: COM автоматизация |
Ох. К сожалению, сто лет уже не пользовались COM.... Попробуйте пока сами покопать, если никто не откликнется. Не получится - попробую что-то вспомнить |
Автор: | bl.beard [ Суббота, 03 Ноябрь, 2018 12:46 ] |
Заголовок сообщения: | Re: COM автоматизация |
ок. попробую. |
Автор: | adva [ Понедельник, 05 Ноябрь, 2018 13:33 ] |
Заголовок сообщения: | Re: COM автоматизация |
Все флаги вроде в разделе справки Platform-Specific Issues (Windows) должны быть описаны. Наверное надо какой-то использовать |
Автор: | bl.beard [ Вторник, 06 Ноябрь, 2018 00:43 ] |
Заголовок сообщения: | Re: COM автоматизация |
начал всматриваться что сгенерировалось. Код: (* IOtAction Interface *) IOtAction* = POINTER TO RECORD ["{50CF2A57-582B-48BA-9344-B7FB1F280472}"] (stdole.IDispatch) (* dispatch, dual *) END; в этот фрагмент внес 2 исправления и тогда он скомпилировался без ошибок: Код: (* IOtAction Interface *) IOtAction* = POINTER TO ABSTRACT RECORD ["{50CF2A57-582B-48BA-9344-B7FB1F280472}"] (WinOleAut.IDispatch) (* dispatch, dual *) END; POINTER TO RECORD -> POINTER TO ABSTRACT RECORD (по просьбе компилятора) и stdole.IDispatch -> WinOleAut.IDispatch но кроме этого все интерфейсы сгенерились дважды: Код: (* IOtEmailAttachments Interface *) IOtEmailAttachments* = POINTER TO ABSTRACT RECORD ["{4414FD91-D8BB-11D3-AAE7-00500422BC69}"] (WinOleAut.IDispatch) (* dispatch, dual *) END; (* IOtEmailAttachments Interface *) IOtEmailAttachments* = POINTER TO ABSTRACT RECORD ["{4414FD91-D8BB-11D3-AAE7-00500422BC69}"] (WinOleAut.IDispatch) (* size: 4, vtbl size: 64, dual, oleauto *) END; и компилятор сообщает "multiply defined identifier" если 1 удалить, то этот фрагмент тоже компилится (разница в них только в последующем комментарии, я же правильно понимаю, что для компилятора и среды он не несет никакой смысловой нагрузки?). это так и должно быть? или я что-то изначально неправильно делаю? Интерфейсов в сервере много, вот сейчас ошибок компиляции этого модуля 12тыс. : Код: compiling "CtlOtAut" 12152 errors detected Как то странно много ошибок компиляции получается, это при том что я уже произвел множественную замену "POINTER TO ABSTRACT RECORD" и "stdole. -> WinOleAut." Подскажите, пжст, я на правильном пути или нужно делать что то по другому? |
Автор: | budden [ Среда, 07 Ноябрь, 2018 13:50 ] |
Заголовок сообщения: | Re: COM автоматизация |
Вроде там есть туториалы. Хотя сам я их не читал |
Автор: | Иван Денисов [ Среда, 07 Ноябрь, 2018 14:20 ] |
Заголовок сообщения: | Re: COM автоматизация |
Я тоже COM никогда сам не делал, только использовал готовую подсистему Ctl. Рекомендую обратиться также на международном форуме с вопросом. https://community.blackboxframework.org/ Возможно там найдутся люди, кто сталкивался с такой проблемой. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |