Возвращает адрес памяти для первого символа memo-поля fld в текущей записи выбранной рабочей области.
long _FindMemo(Locator FAR *fld) Locator FAR *fld; /* Имя memo-поля. */ |
Примечания
_FindMemo( ) позволяет получать доступ непосредственно к содержимому memo-поля в текущей записи. Если memo-поле в текущей записи оказывается пустым или если fld d не является именем memo-поля, _FindMemo( ) возвращает отрицательное целое число, абсолютное значение которого равно номеру ошибки Visual FoxPro.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере извлекается содержимое memo-поля для текущей записи. FindMemo( ) отыскивает memo-поле в текущей записи memo-файла. Затем перемещается указатель файла к найденной позиции с помощью _FSeek( ), и содержимое memo-поля сохраняется в памяти с помощью _FRead( _MemoSize( )).
Код Visual FoxPro
![]() | |
---|---|
SET LIBRARY TO FINDMEMO CREATE TABLE WMemo (MemoField M) APPEND BLANK REPLACE MemoField WITH "Hello, World." ? GETMEMO(@MemoField) |
Код 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 }; |