Помещает значение переменной памяти или поля текущей записи, указанные с помощью loc в val.
int _Load(Locator FAR *loc, Value FAR *val) Locator FAR *loc; /* размещение переменной. */ Value FAR *val; /* Хранение значения переменной. */ |
Примечания
_Load() возвращает 0, если исполнение процедуры было успешным. В противном случае, она возвращет отрицательное число, абсолютное значение которого представляет собой номер ошибки Visual FoxPro. Вы можете использовать _Load() для извлечения содержимого мемо-поля, но она не будет извлекать символы из поля после первых 65,000 байт. Если loc определяет одномерный массив, Visual FoxPro возвратит значение его первого элемента.
_Load() не работает с объектами. Если loc представляет собой ссылку на объект, то _Load() вернет 0 wбез заполнения структуры val Value. Используйте _Evaluate() для получчения объектной ссылки.
Если установка поля Locator l_offset равна – 1, то Visual FoxPro возвратит логическое значение структуры, определяющее - была ли удалена текущая запись в указанной рабочей области:
-
ev_length = .T. = DELETED()
-
ev_length = .F. = NOT DELETED()
Замечание
_Load() создает дейскриптор только в том случае, когда загружаемая переменная памяти вашей программы представляет собой символьную строку (ev_type = 'C'). Все остальные типы данных хранят свои значения в самой структуре Value. Ваша программа должна освобождать дескрипторы, созданные с помощью _Load().
Для получения более подробной информации о том, как создать библиотеу API и интегрировать ее с Visual FoxPro, смотрите описание Доступ к Visual FoxPro API.
Пример
Приведенный ниже пример преобразует в верхний регистр строчный параметр, посланный по ссылке.
Код
Visual FoxPro
![]() | |
---|---|
SET LIBRARY TO LOAD x = "abc" = XUPPER(@x) ? x |
Код
C
![]() | |
---|---|
#include <pro_ext.h> void FAR Upper(ParamBlk FAR *parm) { char FAR *pString; Value val; int i; // // _Load() и _Store представляют собой функции для pass-by-reference. // _Load(&parm->p[0].loc, &val); // // FoxPro не проверяет тип аргументов pass-by-reference, поэтому это делаем мы. // if (val.ev_type != 'C') { _Error(9); // "Data type mismatch" } pString = _HandToPtr(val.ev_handle); for (i = 0; i < val.ev_length; i++) { if ('a' <= *pString && *pString <= 'z') { *pString += ('A' - 'a'); } pString++; } _Store(&parm->p[0].loc, &val); // // Нам необходимо высвободить дескриптор, который мы создали с помощью _LOAD() // _FreeHand(val.ev_handle); } FoxInfo myFoxInfo[] = { {"XUPPER", (FPFI) Upper, 1, "R"}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Смотрите
также
Справочное руководство
Процедура библиотеки API _ALen()Процедура библиотеки API _FindVar()
Процедура библиотеки API _NameTableIndex()
Процедура библиотеки API _NewVar()
Процедура библиотеки API _Release()
Процедура библиотеки API _Store()
Концепции
Процедуры библиотеки API от A до ZПрочие ресурсы
Доступ к Visual FoxPro APIПроцедуры библиотеки API по категориям

© Microsoft Corporation. All rights reserved.
Перевод выполнен JS.