_Store( ) (Rutina de biblioteca API)
Reemplaza la variable de memoria especificada por loc por el valor val.
int _Store(Locator FAR *loc, Value FAR *val)
Locator FAR *loc; /* Memory variable locator. */
Value FAR *val; /* Value to store. */
Observaciones
Haga referencia individual a elementos de matriz al establecer l_subs como el número de subíndices que ha especificado, y l_sub1 y l_sub2 como los subíndices actuales. El primer elemento de una matriz se numera como 1. Si loc especifica una matriz y l_subs es 0, _Store( ) guardará el valor de val en todos los elementos de la matriz.
_Store( ) devuelve 0 si tiene éxito. Si falla, _Store( ) devolverá un entero negativo cuyo valor absoluto será un número de error de Visual FoxPro. Si _Store( ) se queda sin memoria mientras almacena en una matriz, es posible que se hayan establecido los valores de algunos elementos de matriz, mientras que otros no.
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 ejemplo siguiente convierte a mayúsculas un argumento de cadena pasado por referencia.
Código Visual FoxPro
SET LIBRARY TO STORE
x = "abc"
= XUPPER(@x)
? x
Código C
#include <pro_ext.h>
void FAR Upper(ParamBlk FAR *parm)
{
char FAR *pString;
Value val;
int i;
//
// _Load() and _Store are the functions of interest for pass-by-reference.
//
_Load(&parm->p[0].loc, &val);
//
// FoxPro doesn't check the type of pass-by-reference arguments, so we do.
//
if (val.ev_type != 'C') {
_Error(9); // "Data type mismatch"
}
pString = _HandToPtr(val.ev_handle);
for (i = 0; i < val.ev_length; i++) {
if ('a' <= *pString && *pString <= 'z') {
*pString += ('A' - 'a');
}
pString++;
}
_Store(&parm->p[0].loc, &val);
//
// We need to free the handle that we created with _LOAD()
//
_FreeHand(val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"XUPPER", (FPFI) Upper, 1, "R"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
Vea también
_ALen( ) (Rutina de biblioteca API) | _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)