Share via


_ALen( ) (Rutina de biblioteca API)

Devuelve información acerca de las dimensiones de la matriz cuyo índice en la tabla de nombres es nti.

long _ALen(NTI nti, int mode)
NTI nti;                     /* Array name table index. */
int mode;                     /* Mode to determine return value. */

Observaciones

Si mode es AL_ELEMENTS, _ALen( ) devuelve el número total de elementos de la matriz. Si mode es AL_SUBSCRIPT1, _ALen( ) devuelve el valor del primer subíndice utilizado para declarar la matriz. Si mode es AL_SUBSCRIPT2, _ALen( ) devuelve el valor del segundo subíndice utilizado para declarar la matriz.

Si nti no representa el nombre de una matriz existente, _ALen( ) devuelve – 1 sin tener en cuenta el valor de mode.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona una rutina API de Visual FoxPro para cada uno de los tres posibles valores.

Código Visual FoxPro

SET LIBRARY TO ALEN  
DIMENSION a[10, 11]
? ALENELEM(@a)  && returns 110
? ALENSUB1(@a)  && returns 10
? ALENSUB2(@a)  && returns 11

DIMENSION b[3]
? ALENELEM(@b)  && returns 3
? ALENSUB1(@b)  && returns 3
? ALENSUB2(@b)  && returns 0; no second subscript

c = .F.
? ALENELEM(@c)  && returns -1 because variable "c" is not an array
? ALENSUB1(@c)  && returns -1 because variable "c" is not an array
? ALENSUB2(@c)  && returns -1 because variable "c" is not an array

Código C

#include <pro_ext.h>

void FAR alenElem(ParamBlk FAR *parm)
{
   _RetInt(_ALen(parm->p[0].loc.l_NTI, AL_ELEMENTS), 10);
}

void FAR alenSub1(ParamBlk FAR *parm)
{
   _RetInt(_ALen(parm->p[0].loc.l_NTI, AL_SUBSCRIPT1), 10);
}

void FAR alenSub2(ParamBlk FAR *parm)
{
   _RetInt(_ALen(parm->p[0].loc.l_NTI, AL_SUBSCRIPT2), 10);
}

FoxInfo myFoxInfo[] = {
   {"ALENELEM", (FPFI) alenElem, 1, "R"},
   {"ALENSUB1", (FPFI) alenSub1, 1, "R"},
   {"ALENSUB2", (FPFI) alenSub2, 1, "R"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindVar( ) (Rutina de biblioteca API) | _Load( ) (Rutina de biblioteca API) | _NameTableIndex( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API) | _Store( ) (Rutina de biblioteca API)