Compartir a través de


COMARRAY( ) (Función)

Especifica cómo se transfieren las matrices a los objetos COM.

COMARRAY(oObject [, nNewValue])

Valores devueltos

Numeric

Parámetros

  • oObject
    Una referencia de objeto al objeto COM.

  • nNewValue
    Especifica cómo se pasa una matriz al objeto COM especificado con oObject. La tabla siguiente muestra la configuración para nNewValue y cómo se pasa la matriz al objeto COM.

    nNewValue Descripción
    0 El índice de la matriz parte de 0 y la matriz se pasa por valor.
    1 (Predeterminado) El índice de la matriz parte de 1 y la matriz se pasa por valor. Es compatible con versiones anteriores de Visual FoxPro.
    10 El índice de la matriz parte de 0 y la matriz se pasa por referencia.
    11 El índice de la matriz parte de 1 y la matriz se pasa por referencia.
    100 La matriz tiene un tamaño fijo que no se puede cambiar.

    Ejecute COMARRAY( ) sin el argumento nNewValue para obtener el valor actual.

Observaciones

Las versiones anteriores de Visual FoxPro sólo pueden pasar matrices a objetos COM por valor. Además, se supone que el índice de la matriz pasada al objeto COM parte de 1, lo que se significa que el primer elemento, fila y columna de la matriz se indica con 1.

Sin embargo, algunos objetos COM requieren que las matrices se pasen por referencia o que el índice de la matriz pasada parta de cero (el primer elemento, fila y columna se indica con 0), o las dos cosas. COMARRAY( ) permite especificar cómo se pasa la matriz al objeto COM y supone que sabe cómo se debe pasar la matriz al objeto COM.

Tenga en cuenta que COMARRAY( ) sólo se utiliza cuando se pasan matrices a objetos COM con la sintaxis siguiente:

oComObject.Method(@MyArray)

Si se omite el símbolo @, sólo se pasará al objeto COM el primer elemento de la matriz y COMARRAY( ) no tendrá ningún efecto.

El valor aditivo nValue de 100, tal como se utiliza en el ejemplo siguiente, permite impedir que se cambie el tamaño de una matriz (para ejecutar este ejemplo, genere primero la definición de clase en una DLL con el nombre "t1.dll"). Es recomendable comprobar los posibles errores después de llamar el servidor, por si el servidor intenta cambiar las dimensiones de la matriz.

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

Vea también

COMCLASSINFO( ) | CREATEOBJECT( ) | GETOBJECT( )