Оператор Comimport

Синтаксис

$ ComImportDeclaration = COMIMPORT FROM string

{( ClassImportDeclaration | InterfaceImportDeclaration ) “;” }

END COMIPORT ";"

 

$ ClassImportDeclaration = CLASS ident : BaseImportClass

$ End Class ident ";"

$ BaseImportClass = qualident

 

$ InterfaceImportDeclaration = INTERFACE ident [“:” BaseImportInterface]

$ BaseImportInterface = qualident

Описание

Блок ComImport предназначен для импорта описаний классов и интерфейсов из библиотек (dll) и библиотек типов (tlb). После ключевого слова FROM указывается строка с GUID или путь и наименование файла, из которой производится импорт описаний. Можно импортировать интерфейсы с ключевым словом INTERFACE или коклассы с ключевым словом CLASS. Для каждого интерфейса импортируются все методы и свойства, для которых не указаны атрибуты Restricted или Hidden.

Для импортированных коклассов можно создавать объекты с помощью оператора New. При этом будет создан экземпляр COM-объекта. Обращение к методам объекта, а также к методам интерфейсов, которые реализуются COM-объектами, приводит к вызову соответствующих методов этих COM-объектов.

Пример

Для выполнения примера предполагается наличие файла библиотеки типов "MyDll.tlb", расположенного в корневом каталоге диска С. В библиотеке реализован COM-объект с наименованием "Test", зарегистрированный в реестре Windows. В интерфейсе COM-объекта "ITest" имеется реализация функции "TestFunction", принимающей на вход два целочисленных параметра и возвращающей вещественное значение.

Comimport From "C:\MyDll.tlb"

Interface ITest;

Class Test: Object, ITest

End Class Test;

End Comimport;

 

Sub Main;

Var

a: Test;

i: Double;

Begin

a := New Test.Create;

Try

i := a.TestFunction(4, 4);

Debug.WriteLine(i.ToString);

Except

Debug.WriteLine("Ошибка при выполнении функции TestFunction");

End Try;

End Sub Main;

После выполнения примера будет выполнена функция "TestFunction". Если функция вернула корректное значение, то данное значение будет выведено в консоль среды разработки, иначе будет выведено сообщение об ошибке.

Если известен GUID библиотеки, то блок Comimport можно записать следующим образом:

Comimport From "{BC528177-3B14-4D47-9C2D-E69B6045CC62}"

Interface ITest;

Class Test: Object, ITest

End Class Test;

End Comimport;

См. также:

Операторы