_FindVar( ), API-Bibliotheksroutine
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