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.
Bietet eine Möglichkeit zum Initialisieren eines Locators. Danach können Sie mit Hilfe von _Store( ) Daten in einer vorhandenen Speichervariable oder einem vorhandenen Feld ablegen.
int _FindVar(NTI nti, int where, Locator FAR *loc)
NTI nti; /* NTI number of variable or field. */
int where; /* Work area number. */
Locator FAR *loc; /* Locator. */
Hinweise
_FindVar( ) füllt den übergebenen Locator mit Informationen über eine Variable oder ein Feld mit dem Namen nti, die bzw. das in dem durch where angegebenen Arbeitsbereich vorhanden ist.
- Hat where den Wert -1, wird vorausgesetzt, dass nti eine Speichervariable ist.
- Liegt where zwischen 1 und 225, wird vorausgesetzt, dass nti ein Feld in dem Arbeitsbereich mit der angegebenen Nummer ist.
- Hat where den Wert 0, prüft _FindVar zunächst, ob nti eine Speichervariable ist. Handelt es sich um keine Speichervariable, wird der angegebene Arbeitsbereich nach einem Feld mit der angegebenen NTI-Nummer durchsucht.
_FindVar( ) gibt Wahr (eine ganze Zahl ungleich 0) zurück, wenn die Variable oder das Feld nti in where gefunden wird. Andernfalls wird Falsch (0) zurückgegeben.
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 der Wert einer Visual FoxPro-Variablen sehr "umständlich" angezeigt.
Visual FoxPro-Code
SET LIBRARY TO FINDVAR
TestVar= "This is a test"
= QMARK("TestVar")
C-Code
#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR NameTableIndexEx(ParamBlk FAR *parm)
{
NTI nti;
char FAR *name;
Locator loc;
Value val;
// 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';
nti = _NameTableIndex(name);
_FindVar(nti, 0, &loc);
_Load(&loc, &val);
_PutValue(&val);
}
FoxInfo myFoxInfo[] = {
{"QMARK", (FPFI) NameTableIndexEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
Siehe auch
_ALen( ), API-Bibliotheksroutine | _Load( ), API-Bibliotheksroutine | _NameTableIndex( ), API-Bibliotheksroutine | _NewVar( ), API-Bibliotheksroutine | _ObjectRelease( ), API-Bibliotheksroutine | _Store( ), API-Bibliotheksroutine