Модуль MODCOM
Модуль MODCOM предназначен для осуществления взаимодействия с Component Object Model (COM), являющейся стандартной технологией в среде Windows. Данный модуль поддерживает лишь небольшую часть возможностей COM. Можно выделить две задачи, решаемых модулем MODCOM:
- взаимодействие со сторонними программами (в т.ч. драйверами оборудования), представленными в виде COM-классов;
- расширение возможностей платформы путем создания собственных COM-классов.
Для решения этих задач модуль MODCOM предлагает две модели работы:
- Статическая модель работы подразумевает проекцию заданного COM-интерфейса и реализующего его класса на тип внутреннего языка. Это обеспечивает максимальный комфорт и безопасность использования. Вызов методов COM-интерфейса выглядит как вызов одноименных методов объекта внутреннего языка. Механизм объявления типов модуля автоматически устанавливает соответствия между типами параметров COM-интерфейса и типами внутреннего языка, а компилятор выполняет контроль типов при вызове методов в исходном тексте. Существует развитая настройка проекций на типы в конфигурационном файле modcom.ini. В версии 10.2 статическая модель не реализована.
- Динамическая модель работы подразумевает связывание COM-класса c типом ДИН_COM_ОБЪЕКТ. Этот объявленный в модуле тип позволяет вызывать методы (и обращаться к свойствам) COM-объекта путем указания их имени в виде строкового выражения. Для вызова методов используется список параметров переменной длины. В этом режиме работы разработчик самостоятельно должен осуществлять контроль правильности количества и типов параметров. С другой стороны, методы типа ДИН_COM_ОБЪЕКТ позволяют разработчику обрабатывать ошибки.
Следует отметить, что обе модели в равной степени применимы для решения каждой из указанных задач. Разработчику следует самостоятельно выбрать модель взаимодействия с COM в зависимости от специфики задачи, личных предпочтений или других факторов. COM-классы, специально созданные разработчиком для расширения платформы, все же рекомендуется использовать в рамках статической модели. Использование статической модели позволяет лучше следовать синтаксису вызова методов во внутреннем языке, производить контроль типов на этапе компиляции, использовать русские идентификаторы для методов.
Существуют ограничения на типы параметров методов и свойств COM-интерфейсов, используемых в модуле MODCOM. Поддерживаются простые типы: строки, числа, логические значения, дата/время (cм. Соответствие типов COM типам внутреннего языка). Следовательно, не поддерживаются: ссылки на интерфейсы, любые указатели, определенные пользователем типы (UDT). В статической модели методы и свойства, использующие неподдерживаемые типы, могут быть пропущены при объявлении во внутреннем языке (cм. Конфигурация модуля в modcom.ini). В динамической модели методы и свойства, использующие неподдерживаемые типы, не мешают осуществлять работу с поддерживаемыми методами и свойствами.