- •Изучение способов разработКи простейших com-объектов в среде delphi.
- •5.6 Методические указания.
- •5.6.1 Основные сведения о сом-объектах
- •5.6.2 Составляющие com-приложений
- •5.6.2.1 Способы взаимодействия com-клиентов с com-серверами
- •5.6.2.2 Регистрация com-сервера
- •5 .6.2.3 Библиотека com
- •1.6.2.4 Hresult.
- •5.6.2.5 Библиотека типов.
- •5.6.2.6 Общие сведения о com-клиентах
- •5.6.3 Объекты com в среде Delphi.
- •5.6.3.1 Средства реализации интерфейсов в среде Delphi.
- •5.6.3.2 Классы TcomObj, Coclass и tTypedComObject.
- •5.6.3.3 Пример простейшего приложения с применением интерфейсов.
- •ShowMessage(MyInterface.GetName);
- •5.6.4 Разработка структуры клиентского и серверного приложений.
- •5.6.5 Создание внутреннего сервера сом.
- •5.6.5.1 Создание динамической библиотеки.
- •5.6.5.2 Создание объекта сом.
- •5.6.5.3 Создание интерфейсов объекта сом.
- •5.6.5.4 Задание кода методов интерфейса.
- •5.6.6 Разработка клиентского приложения для внутреннего сервера
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 главного меню. Однако следует иметь в виду, что при переносе сервера СОМ на другие компьютеры этот способ, как правило, непригоден. Поэтому если вы собираетесь распространять созданные вами СОМ-серверы, то необходимо позаботиться о том, чтобы пользователь мог без особых затруднений выполнить их регистрацию.
