_FindMemo( ), API-Bibliotheksroutine
Gibt die Speicheradresse des ersten Zeichens im Memofeld fld für den aktuellen Datensatz im ausgewählten Arbeitsbereich zurück.
long _FindMemo(Locator FAR *fld)
Locator FAR *fld; /* Memo field name. */
Hinweise
_FindMemo( ) ermöglicht Ihnen den direkten Zugriff auf den Inhalt des Memofeldes für den aktuellen Datensatz. Wenn ein Memofeld für den aktuellen Datensatz leer ist, oder wenn fld nicht der Name des Memofeldes ist, gibt _FindMemo( ) eine negative ganze Zahl zurück, deren absoluter Wert eine Visual FoxPro-Fehlernummer darstellt.
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 für den aktuellen Datensatz abgerufen. Die Position des Memofeldinhalts für den aktuellen Datensatz wird mit _FindMemo( ) in der Memodatei gesucht. Anschließend wird im Beispiel der Dateizeiger mit _FSeek( ) an diese Position verschoben. Der Inhalt des Memofeldes wird mit _FRead( _MemoSize( )) im Arbeitsspeicher gespeichert.
Visual FoxPro-Code
SET LIBRARY TO FINDMEMO
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 | _MemoChan( ), API-Bibliotheksroutine | _MemoSize( ), API-Bibliotheksroutine