Freigeben über


_MemoChan( ), API-Bibliotheksroutine

Gibt den Dateikanal der Memodatei zurück, die dem angegebenen Arbeitsbereich workarea zugeordnet ist.

FCHAN _MemoChan(int workarea)
int workarea;               /* Work area number. */

Hinweise

Wenn keine Datenbank in diesem Arbeitsbereich geöffnet ist oder die Datenbank keine Memodatei enthält, gibt _MemoChan( ) den Wert –1 zurück.

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 Inhalt eines Memofeldes abgerufen. _MemoChan( -1) gibt einen Dateikanal zur Memodatei des aktuellen Arbeitsbereichs zurück. FCHAN wird für API-Rückrufroutinen (Callback-Routinen) für Ein-/Ausgaben in Dateien auf niedriger Ebene als Argument verwendet.

Visual FoxPro-Code

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

C-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';
   _RetChar(memoContents);
}

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

Siehe auch

_AllocMemo( ), API-Bibliotheksroutine | _DBReplace( ), API-Bibliotheksroutine | _FindMemo( ), API-Bibliotheksroutine | _FOpen( ), API-Bibliotheksroutine | _MemoSize( ), API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API