Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_TKP_PrCOM.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
556.03 Кб
Скачать

5.6.5.4 Задание кода методов интерфейса.

Задание кода методов интерфейсов никаких особенностей не имеет. Достаточно просто написать необходимый текст программы между ключевыми словами begin и end для каждого из объявленных методов. Наибольшие сложности в нашем примере может вызвать лишь использование вариантных массивов. При разработке объектов СОМ довольно часто используют вариантные переменные. А передачу массива объекту СОМ проще всего реализовать с использованием типа Variant. Поэтому рассмотрим работу с вариантными массивами более подробно.

Для создания вариантного массива используются две функции:

- function VarArrayCreate(const Bounds: array of Integer: varType: Integer): Variant -выделяет область памяти для вариантного массива и возвращает указатель на него. Параметр Bounds задает индексацию массива, varType - тип элементов массива;

- function VarArrayOf(const Values: array of Variant): Variant - выделяет область памяти для вариантного массива и инициализирует созданный массив значениями, переданными в параметре Values.

При использовании вариантных массивов важно знать минимальное и максимальное значения его индексов. Для этого определены следующие функции:

- function VarArrayLowBound(const A: Variant: Dim: Integer): Integer - возвращает минимальное значение индекса измерения Dim массива А;

- function VarArrayHighBound(const A: Variant; Dim: Integer): Integer - возвращает максимальное значение индекса измерения Dim массива А.

Нумерация измерений в вариантных массивах ведется с 1. Из этого следует, что для получения границ индекса одномерного массива параметр Dim должен принимать значение 1.

Вариантные массивы могут быть многомерными, причем размерность различных измерений в общем случае может быть разной. Поэтому функции VarArrayLowBound и VarArrayHighBound требуют указания измерения, для которого определяются границы индекса

Н абор действий, которые должны выполняться при вызове каждого из методов рассматриваемого примера, достаточно прост: сначала необходимо определить пределы изменения индекса вариантного массива, а затем произвести тривиальные вычисления (рис. 5. ):

После задания кода реализации методов создание объекта СОМ завершено. Осталось только выполнить компиляцию динамической библиотеки и регистрацию созданного сервера СОМ.

Компиляция динамической библиотеки, являющейся внутренним сервером СОМ, ничем не отличается от компиляции обычного приложения. Следует просто выбрать команду главного меню Project | Compile или нажать комбинацию клавиш Ctrl+F9. Если в коде не содержится синтаксических ошибок, то после этого будет выполнена компиляция и создан файл TestCOMServer.dll. Чтобы созданный объект СОМ можно было использовать в приложениях, следует выполнить регистрацию сервера СОМ. способы регистрации внутреннего сервера были рассмотрены в п. 5.6.5.2.

при разработке приложений в среде delphi проще всего воспользоваться командой Run | Register ActiveX Server главного меню. Однако следует иметь в виду, что при переносе сервера СОМ на другие компьютеры этот способ, как правило, непригоден. Поэтому если вы собираетесь распространять созданные вами СОМ-серверы, то необходимо позаботиться о том, чтобы пользователь мог без особых затруднений выполнить их регистрацию.