Добрый вечер! Я имею дело с ПО кол-центра. У него имеется SDK на COM-объектах. Я хочу научиться с ним взаимодействовать (посылать запросы, получать ответы, обрабатывать события). Имея некоторый опыт работы в Lazarus, сделать это мне не удалось. Прочитал, что PascalABC.Net умеет работать с COM-объектами. Имеется ли в PascalABC.Net необходимый функционал для решения данной задачи?
Чтобы работать с COM объектами достаточно external
.
Но что обычно имеют в виду под функционалом для работы с ними - это автоматическое создание обёрток. В готовых обёртках будут уже правильно прописаны все методы и их сигнатуры. Таким образом анализатор кода сразу подсказывает что с чем можно делать, а компилятор не даёт передать неправильный тип данных в вызов.
Для PascalABC.Net, на сколько я знаю, нет готовых COM кодоненераторов.
Но зато есть .Net со своим классом Marshal
(System.Runtime.InteropServices.Marshal
, если без uses
) с методами для работы с неуправляемым кодом.
К примеру, в вашем случае будет релевантен метод Marshal.GetObjectForIUnknown
.
Он создаёт объект-обёртку анонимного типа, с нужным вам интерфейсом.
Примеры в документации для C#, но на данный паскаль они переводятся строчка в строчку.