Freigeben über


_ALen( ), API-Bibliotheksroutine

Gibt Informationen über die Abmessungen des Arrays mit dem Namenstabellenindex nti zurück.

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

Hinweise

Ist mode auf AL_ELEMENTS gesetzt, gibt _ALen( ) die Gesamtzahl der Ereignisse im Array zurück. Ist mode auf AL_SUBSCRIPT1 gesetzt, gibt _ALen( ) den Wert des ersten Indexes zurück, der zur Deklaration des Arrays verwendet wurde. Ist mode auf AL_SUBSCRIPT2 gesetzt, gibt _ALen( ) den Wert des zweiten Indexes zurück, der zur Deklaration des Arrays verwendet wurde.

Wenn nti nicht den Namen eines vorhandenen Arrays indiziert, gibt _ALen( ) den Wert -1 zurück, unabhängig vom Wert in mode.

Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.

Beispiel

Im folgenden Beispiel wird für jeden der drei möglichen Mode-Werte eine Visual FoxPro-API-Routine zur Verfügung gestellt.

Visual FoxPro-Code

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-Code

#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
};

Siehe auch

_FindVar( ), API-Bibliotheksroutine | _Load( ), API-Bibliotheksroutine | _NameTableIndex( ), API-Bibliotheksroutine | _NewVar( ), API-Bibliotheksroutine | _ObjectRelease( ), API-Bibliotheksroutine | _Store( ) API-Bibliotheksroutine