JavaScript Editor js editor     Web development 

Main Page

Returns the length of the specified memo field in the memo file for the current record.

long _MemoSize(Locator FAR *fld)
Locator FAR *fld;            /* Memo field address. */


When the memo field for the current record is empty, or when fld isn't a memo field, _MemoSize(В ) returns a negative integer whose absolute value is a Visual FoxPro error number.

For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.


The following example retrieves the contents of a memo field for the current record. _MemoSize(В ) is used to determine how much memory should be allocated for a buffer, and how many bytes should be read from the memo file.

Visual FoxPro Code

В Copy Code
CREATE TABLE WMemo (MemoField M)
REPLACE MemoField WITH "Hello, World."
? GETMEMO(@MemoField)

C Code

В Copy Code
#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';

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

See Also

JavaScript Editor js editor     Web development