Share via


_FindMemo( ) (Rutina de biblioteca API)

Devuelve la dirección de memoria del primer carácter del campo memo fld para el registro actual en el área de trabajo seleccionada.

long _FindMemo(Locator FAR *fld)
Locator FAR *fld;            /* Memo field name. */

Observaciones

_FindMemo( ) permite tener acceso directamente al contenido del campo memo del registro actual. Cuando el campo memo del registro actual está vacío o cuando fld no es el nombre de un campo memo, _FindMemo( ) devuelve un entero negativo cuyo valor absoluto es un número de error de Visual FoxPro.

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 siguiente ejemplo recupera el contenido de un campo memo para el registro actual. Utiliza FindMemo( ) para encontrar la ubicación del contenido memo para el registro actual en el archivo memo. A continuación, el ejemplo mueve el puntero de archivo hasta su ubicación con _FSeek( ) y almacena el contenido del campo memo en memoria mediante _FRead( _MemoSize( )).

Código Visual FoxPro

SET LIBRARY TO FINDMEMO
CREATE TABLE WMemo (MemoField M)
APPEND BLANK
REPLACE MemoField WITH "Hello, World."
? GETMEMO(@MemoField)

Código C

#include <pro_ext.h>

FAR FindMemoEx(ParamBlk FAR *parm)
{

   Locator FAR *memoFldLoc;
   FCHAN fchMemo;
   char FAR *memoContents;
   int memoLen;
   long loc;

   if ((fchMemo = _MemoChan(-1)) == -1)
   {
      _UserError("_MemoChan() failed");
   }
   memoFldLoc = &parm->p[0].loc;

   if ((loc = _FindMemo(memoFldLoc)) < 0)
   {
      _UserError("_FindMemo() failed");
   }
   if ((memoLen = _MemoSize(memoFldLoc)) < 0)
   {
      _UserError("_MemoSize() failed");
   }
   if ((memoContents = _Alloca(memoLen + 1)) == 0)
   {
      _Error(182); // "Insufficient memory"
   }
   _FSeek(fchMemo, loc, FS_FROMBOF);
   _FRead(fchMemo, memoContents, memoLen);
   memoContents[memoLen] = '\0';
   _RetChar(memoContents);
}

FoxInfo myFoxInfo[] = {
   {"GETMEMO", (FPFI) FindMemoEx, 1, "R"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocMemo( ) (Rutina de biblioteca API) | _DBReplace( ) (Rutina de biblioteca API) | _MemoChan( ) (Rutina de biblioteca API) | _MemoSize( ) (Rutina de biblioteca API)