Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt den Namenstabellenindex zurück, der einem bestimmten Wert für name entspricht, oder den Wert -1, wenn dieser Name nicht in der Namenstabelle enthalten ist.
NTI _NameTableIndex(char FAR *name)
char FAR *name; /* Name. */
Hinweise
Selbst wenn keine Variable mit dem Namen name existiert, kann name in der Namenstabelle gefunden werden. Mit _FindVar( ) stellen Sie fest, ob eine Variable mit dem Namen name existiert, indem Sie den Index der Namenstabelle angeben, der von _NameTableIndex( ) als nti-Parameter zurückgegeben wird.
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 eine Speichervariable freigegeben, deren Name als Zeichenargument angegeben ist. _NameTableIndex( ) bestimmt den Variablennamen, nachdem die Variable freigegeben wurde. Daher wird _NameTableIndex( ) zusammen mit _FindVar( ) verwendet, um sicherzustellen, dass die Speichervariable momentan definiert ist.
Visual FoxPro-Code
SET LIBRARY TO NTI
x = 123
= XRELEASE("x")
C-Code
#include <pro_ext.h>
FAR ReleaseEx(ParamBlk FAR *parm)
{
NTI nti;
char FAR *name;
int exitCode;
Locator loc;
// Null terminate character string, name of variable
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
name[parm->p[0].val.ev_length] = '\0';
if ((nti = _NameTableIndex(name)) == -1)
{
_HUnLock(parm->p[0].val.ev_handle);
_UserError("Cannot find variable in name table.");
}
_HUnLock(parm->p[0].val.ev_handle);
if (_FindVar(nti, -1, &loc))
{
_PutStr("\nVariable exists prior to _Release().");
}
if ((exitCode =_Release(nti)) < 0)
{
_Error(-exitCode);
}
_HLock(parm->p[0].val.ev_handle);
name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
name[parm->p[0].val.ev_length] = '\0';
if ((nti = _NameTableIndex(name)) != -1)
{
_PutStr("\n_NameTableIndex() still finds variable \
after it is released.");
}
_HUnLock(parm->p[0].val.ev_handle);
if (!_FindVar(nti, -1, &loc))
{
_PutStr("\nVariable does not exist after _Release().");
}
}
FoxInfo myFoxInfo[] = {
{"XRELEASE", (FPFI) ReleaseEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
Siehe auch
_ALen( ), API-Bibliotheksroutine | _FindVar( ), API-Bibliotheksroutine | _Load( ), API-Bibliotheksroutine | _NewVar( ), API-Bibliotheksroutine | _ObjectRelease( ), API-Bibliotheksroutine | _Store( ) API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API