Возвращает длину заданного memo-поля в текущей записи memo-файла.
long _MemoSize(Locator FAR *fld)
Locator FAR *fld; /* Адрес memo-поля. */ |
Примечания
Если memo-поле в текущей записи оказывается пустым или если fld не является memo-полем, _MemoSize( ) возвращает отрицательное целое число, абсолютное значение которого представляет собой номер ошибки Visual FoxPro.
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере извлекается содержимое memo-поля текущей записи. _MemoSize( ) позволяет определить, сколько памяти следует выделить для буфера и сколько байтов следует считать из memo-файла.
Код Visual FoxPro
Copy Code | |
---|---|
SET LIBRARY TO MEMOSIZE CREATE TABLE WMemo (MemoField M) APPEND BLANK REPLACE MemoField WITH "Hello, World." ? GETMEMO(@MemoField) |
Код C
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'; _RetChar(memoContents); } FoxInfo myFoxInfo[] = { {"GETMEMO", (FPFI) FindMemoEx, 1, "R"}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Смотрите также
© Microsoft Corporation. All rights reserved. Microsoft is not reponsible for the contents of the translated help topics.