Freigeben über


_Load( ), API-Bibliotheksroutine

Speichert den durch loc spezifizierten Wert der Speichervariable bzw. des aktuellen Datensatzfeldes in val.

int _Load(Locator FAR *loc, Value FAR *val)
Locator FAR *loc;         /* Variable location. */
Value FAR *val;            /* Holds value of the variable. */

Hinweise

_Load( ) gibt 0 zurück, wenn die Routine erfolgreich ist. Wenn die Routine nicht erfolgreich ist, gibt sie eine negative ganze Zahl zurück, deren absoluter Wert eine Visual FoxPro-Fehlernummer darstellt. Mit Hilfe von _Load( ) können Sie den Inhalt eines Memofeldes abrufen. Nach den ersten 65.000 Byte werden aus dem Feld keine weitere Zeichen abgerufen. Wenn loc ein eindimensionales Array spezifiziert, gibt Visual FoxPro den Wert des ersten Elements des Arrays zurück.

_Load( ) arbeitet nicht mit Objekten. Wenn loc einen Objektverweis bezeichnet, gibt _Load( ) den Wert 0 zurück, ohne die val-Wertstruktur zu füllen. Verwenden Sie _Evaluate( ), um einen Objektverweis zu erhalten.

Wenn für das Locatorfeld l_offset der Wert -1 festgelegt ist, gibt Visual FoxPro eine Struktur der Wahrheitswerte zurück, die angibt, ob der aktuelle Datensatz im angegebenen Arbeitsbereich gelöscht wurde.

  • ev_length = .T. = DELETED( )

  • ev_length = .F. = NOT DELETED( )

    Anmerkung   _Load( ) erstellt nur dann ein Handle, wenn die Speichervariable, die Ihr Programm zurzeit lädt, eine Zeichenfolge ist (wie ev_type = C). Die Werte aller anderen Datentypen werden in der Value-Struktur gespeichert. Ihr Programm muss die Handles freigeben, die mit _Load( ) erstellt wurden.

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 ein durch einen Verweis übergebenes Zeichenfolgenargument in Großbuchstaben konvertiert.

Visual FoxPro-Code

SET LIBRARY TO LOAD   
x = "abc"
= XUPPER(@x)
? x

C-Code

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

Siehe auch

_ALen( ), API-Bibliotheksroutine | _FindVar( ), API-Bibliotheksroutine | _NameTableIndex( ), API-Bibliotheksroutine | _NewVar( ), API-Bibliotheksroutine | _Release( ), API-Bibliotheksroutine | _Store( ) API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API