Программный Файл: ...\Samples\Solution\Toledo\ComArray.scx
В данном примере показывается, как надежно (Strongly Typed) передавать Массивы в Сервер COM при помощи стандартной функции COMARRAY. Указанный сервер COM выполняет вычисления или изменения элементов переданного Массива. В клиентской Форме используется команда DIMENSION для определения размерности передаваемого массива, в которой указывается опция AS, определяющая соответствующий тип элементов рассматриваемого массива (надежная типизация).
В рассматриваемом примере используется сервер COM, который создан в системе Visual FoxPro. При этом также демонстрируется использование Декларации используемых Элементов, которая определяет Типы передаваемых массивов, которые, в свою очередь, должны соответствовать типам параметровByRef, объявленных в Библиотеке Типов COM (Type Library).
При запуске данного примера, пользователю задается Запрос на Регистрацию указанного Сервера COM. Данный сервер COM исключается из Реестра после завершения работы данного Примера.
Для передачи Матрицы, как строго типизированного массива, в Сервер COM:
-
В тестовой Форме Примеры, введите требуемое значение в Матрицу, и нажмите кнопку Determinant (Определитель).
Сервер COM вычисляет Определитель рассматриваемой Матрицы при помощи метода Редукции Гаусса-Джордана.
Дополнительную информацию смотрите в разделах: COMARRAY( ), функция и DIMENSION, команда.
Передача строго типизированных массивов.
Следующий фрагмент программного кода использует команду DIMENSION...AS, которая декларирует строго типизированный массив, который используется в пользовательском Методе: CallCOMServer:
![]() |
|
---|---|
DIMENSION laMatrix(ThisForm.Matrixdim, ThisForm.Matrixdim) AS Double |
Данный Массив передается "по-ссылке" в рассматриваемый сервер Visual FoxPro COM с помощью функции COMARRAY( ):
![]() |
|
---|---|
* Instantiate COM server. |
Передача параметров COM "по-ссылке".
В рассматриваемом примере, используется пользовательский метод RegisterCOMServer, который содержится в Сервере Visual FoxPro COM, компилируется и регистрируется "на-лету", при выполнении Примера. Рассматриваемый программный Код сервера COM иллюстрирует Синтаксис декларации строго типизированных массивов, передаваемых в данный Сервер. При этом, в соответствующей Библиотеке Типов COM выполняется следующая Декларация исполняемого Метода Вычисления Определителя Матрицы:
![]() |
|
---|---|
FUNCTION Determinant(mat[] AS Double @) AS Double |
Указанный массив корректно записывается в Библиотеку Типов как строго типизированный массив. Специальный значек (@) показывает, что принимаемый массив передается "по-ссылке" (ByRef), в Библиотеке Типов.