@Diyar

Как создать OLE объект для интеграции perco S-20 с внешним ПО?

В программном обеспечении, осуществляющем работу с PERCo-S-20, создать
OLE-объект. Для чего необходимо вызвать функцию, аналогичную для создания
COM-объекта:
CreateOleObject('PERCo_S20_SDK_ISFREE.CoPERCo_S20_SDK_WR_64_32')
Кто работал с SDK perco для интеграции с внешним ПО, не могу понять как это сделать и где записать функцию,
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
OCTAGRAM
@OCTAGRAM
Это функция в модуле System.Win.ComObj. Добавляете его в uses и вызываете. Результатом его является объект с интерфейсом IDispatch. Чтобы вызывать у него нетипизированные методы, значение ссылки на IDispatch можно привести к типу OleVariant. У переменной типа OleVariant, если написать точку, Delphi не покажет список подсказок, но вызов скомпилируется. Конечно, если в названии метода опечатка или типы значений не подходящие, то при исполнении будет ошибка.

Чтобы получать подсказки и вообще работать типизированно, нужно генерить модуль импорта COM. В таком модуле Delphi создаст псевдокласс, у которого вместо конструктора Create будет классовая функция Create, и синтаксически похоже: НазваниеCOMКласса.Create. Также можно создавать самостоятельно типизированные ссылки: CreateOleObject(…) as IИмяОсновногоИнтерфейса.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@acwartz
Тут должна быть ваша реклама.
Ну для начала не городить грабли, если мы говорим о COM, то SDK скорее всего зарегистрировал в системе библиотеку типов(TLB) из который Delphi сам создаст полноценный модуль со всеми интерфейсами и сам же пропишет функцию типа CoCreateMySuperDuperSDK: ISuperDuperSDKInterface, которую только что и останется вызвать и больше не думать о том "как вызвать что-то ещё".

И делается это так:
Меню Component -> Import Component... -> "Type library" -> ищем свою халабуду. И далее 3 раза Next ничего не трогая, потом Finish. И вуаля, delphi сделал за всю всю работу, полностью сгенерировав обертку над предоставляемыми интерфейсами.

А если нет, то такую tlb можно поискать внутри dll/exe идущих вместе с SDK или лежащий вообще где-то рядом, потому что COM/OLE распространяются вместе библиотекой типов которая описывает все интерфейсы. Или спросить у разработчиков SDK о ней.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы