Определяет, как массивы переменных памяти VFP передаются внешним объектам COM.

COMARRAY(oObject [, nNewValue])

Параметры

oObject

Определяет объектную ссылку на соответствующий объект COM.

nNewValue

Определяет, как массивы переменных памяти передаются в объект COM, заданный в параметре oObject.

В следующей далее таблице приводятся возможные допустимые значения данного параметра nNewValue, определяющего вариант передачи массивов параметров в объекты COM.

nNewValue Краткое описание

0

Передаваемые массивы типа "zero-based", передаеются по-значению (by value).

1

Передаваемые массивы типа "one-based", передаются по-значению. Для совместимости с младшими версиями Visual FoxPro. (По-умолчанию)

10

Передаваемые массивы типа "zero-based", передаются по-ссылке (by reference).

11

Передаваемые массивы типа "one-based", передаются по-ссылке (by reference).

100

Передаваемые массивы имеют фиксированный размер, и не могут быть переопределены (изменены размеры).

1000

Двоичные массивы не могут быть конвертированы в символьные строки.

Данная функция COMARRAY( ) возвращает текущее значение варианта передачи параметров, при отсутствии аргумента nNewValue.

Expand imageВозвращаемое значение

Числового типа. COMARRAY( ) возвращает текущий вариант передачи массивов в объекты COM.

Expand imageКомментарии

Используйте функцию COMARRAY( ) только в тех случаях, когда передаете массивы данных во внешние объекты COM, при использовании следующего синтаксиса:

oComObject.Method(@MyArray)

NoteПримечание

Если вы не указываете оператор передачи параметров "по-ссылке" (@), тогда только первый элемент массива передается в соответствующий объект COM, и, тем самым, функция and COMARRAY( ) - не работает. Данное правило используется для совместимости с младшими версиями Visual FoxPro.

Когда вы работаете с двоичными массивами данных (VT_UI1), для взаимодействия с требуемыми объектами, серверами COM, система Visual FoxPro конвертирует двоичные массивы в символьные строки. В этом случае, используйте параметр nValue = 1000, который обеспечивает запрет конвертации исходных двоичных массивов данных в символьные строки.

Если некоторый внешний Клиент (внешняя программа) передает двоичные массивы по-ссылке в Visual FoxPro COM Server, то данный сервер Visual FoxPro COM должен также иметь соответствующую установку рассматриваемого параметра nValue =1000. Вы можете выполнить следующую далее команду в соответствующем событии Init создаваемого сервера автоматизации Visual FoxPro COM Server:

 CopyCode imageКопировать Код
COMARRAY(THIS,1000)

Другой вариант аддитивного параметра nValue = 100 обеспечивает сохранность размерности передаваемого массива данных. Вам необходимо контролировать возможные ошибки при попытках изменения размерности передаваемых массивов данных. В следующем далее примере демонстрируется, как предотвратить изменение размерности передаваемого массива данных. Для запуска этого примера требуется предварительное определение и создание модуля DLL, с именем "t1.dll".

 CopyCode imageКопировать Код
LOCAL loSvr, laTest
loSvr = NEWOBJECT("t1.arrayhandler")
DIMENSION laTest[10]
laTest=3
? COMARRAY(loSvr,11 + 100)
* The COM server will return an error on the next line of code
* because arrays passed to loSvr will not allow re-dimensioning.
loSvr.RedimensionArray(@laTest,4)
? ALEN(laTest)

DEFINE CLASS ARRAYHANDLER AS CUSTOM OLEPUBLIC
PROCEDURE RedimensionArray(aArray, nRows)
DIME aArray[nRows]
ENDPROC
ENDDEFINE

Expand imageСм. также