Компилирует и выполняет выражение Visual FoxPro, заданное параметром expr, а результат помещает по адресу res.
int _Evaluate(Value FAR *res, char FAR *expr) Value FAR *res; /* Адрес результата. */ char FAR *expr; /* Выражение. */ |
Примечания
_Evaluate( ) возвращает внутренний номер ошибки Visual FoxPro, которая может произойти во время вычисления выражения Visual FoxPro; если ошибок нет, возвращается 0. Содержимое области res ействительно только в том случае, если _Evaluate( ) возвращает 0.
![]() |
---|
Не вызывайте _Evaluate( ) из обработчика событий. |
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
Следующий пример обеспечивает те же возможности, что и функция Visual FoxPro EVALUATE( ).
Код Visual FoxPro
![]() | |
---|---|
SET LIBRARY TO EVALUATE ? XEVAL("2 + 3") ? XEVAL("'a' + 'b'") ? XEVAL("SIN(PI()/2))") |
Код C
![]() | |
---|---|
#include <pro_ext.h> FAR EvaluateEx(ParamBlk FAR *parm) { char FAR *expr; Value result; // Null terminate character string if (!_SetHandSize(parm->p[0].val.ev_handle, parm->p[0].val.ev_length + 1)) { _Error(182); // "Insufficient memory" } _HLock(parm->p[0].val.ev_handle); expr = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle); expr[parm->p[0].val.ev_length] = '\0'; _Evaluate(&result, expr); _RetVal(&result); _HUnLock(parm->p[0].val.ev_handle); } FoxInfo myFoxInfo[] = { {"XEVAL", (FPFI) EvaluateEx, 1, "C"}, }; FoxTable _FoxTable = { (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo }; |
Смотрите также
Справочное руководство
Процедура библиотеки API _Execute( )Команда CANCEL
Команда QUIT
Прочие ресурсы
Конструкции библиотеки APIДоступ к API Visual FoxPro