_Evaluate( ), API-Bibliotheksroutine
Kompiliert einen mit expr angegebenen Visual FoxPro-Ausdruck und führt ihn aus. Das Ergebnis wird in res platziert.
int _Evaluate(Value FAR *res, char FAR *expr)
Value FAR *res; /* Address for result. */
char FAR *expr; /* Expression. */
Hinweise
Sie können einen beliebigen Ausdruck angeben, der mit der Visual FoxPro-Funktion EVALUATE( ) ausgewertet werden kann. Nach dem Auswerten des Ausdrucks wird die Steuerung normalerweise an die C-Anweisung zurückgegeben, die unmittelbar auf den Aufruf von _Evaluate( ) folgt. Davon ausgenommen ist das Auswerten eines Visual FoxPro-Ausdrucks, der die Visual FoxPro-Befehle CANCEL oder QUIT ausführt.
_Evaluate( ) gibt die interne Visual FoxPro-Fehlernummer für alle Fehler zurück, die während des Auswertens des Visual FoxPro-Ausdrucks auftreten. Wenn keine Fehler auftreten, wird 0 zurückgegeben. Der Inhalt von res ist nur dann gültig, wenn _Evaluate( ) den Wert 0 zurückgibt.
Anmerkung Rufen Sie _Evaluate( ) nicht aus einer Ereignisbehandlungsroutine auf.
Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.
Beispiel
Das folgende Beispiel hat die gleiche Funktionalität wie die Visual FoxPro-Funktion EVALUATE( ).
Visual FoxPro-Code
SET LIBRARY TO EVALUATE
? XEVAL("2 + 3")
? XEVAL("'a' + 'b'")
? XEVAL("SIN(PI()/2))")
C-Code
#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
};
Siehe auch
_Execute( ), API-Bibliotheksroutine | CANCEL-Befehl | QUIT-Befehl | Zugreifen auf die Visual FoxPro-API