Freigeben über


_Execute( ), API-Bibliotheksroutine

Kompiliert die mit Nullwerten abgeschlossene Anweisung, die Sie in stmt angeben und führt sie aus.

int _Execute(char FAR *stmt)
char FAR *stmt;            /* Statement to execute. */

Hinweise

Der Parameter stmt kann ein beliebiger Befehl oder eine beliebige Funktion sein, der bzw. die aus dem Befehlsfenster ausgeführt werden kann. Wenn die Ausführung der Anweisung beendet ist, wird die Steuerung normalerweise an die C-Anweisung zurückgegeben, die unmittelbar auf den Aufruf von _Execute( ) folgt. Davon ausgenommen ist das Ausführen von Codeanweisungen, die die Visual FoxPro-Befehle CANCEL oder QUIT ausführen.

_Execute( ) gibt die interne Visual FoxPro-Fehlernummer für alle Fehler zurück, die während des Ausführens der Anweisung auftreten. Wenn keine Fehler auftreten, wird 0 zurückgegeben.

Anmerkung   Rufen Sie _Execute( ) 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

Im folgenden Beispiel wird die übergebene Visual FoxPro-Anweisung mit _Execute( ) ausgeführt.

Visual FoxPro-Code

SET LIBRARY TO EXECUTE 
= EXEC("? 'Hello, world.'")
= EXEC("DISPLAY STATUS")

C-Code

#include <pro_ext.h>

FAR ExecuteEx(ParamBlk FAR *parm)
{
   char FAR *cmd;

   // 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);
   cmd = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
   cmd[parm->p[0].val.ev_length] = '\0';

   _Execute(cmd);

   _HUnLock(parm->p[0].val.ev_handle);
}

FoxInfo myFoxInfo[] = {
   {"EXEC", (FPFI) ExecuteEx, 1, "C"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Siehe auch

_Evaluate( ), API-Bibliotheksroutine | CANCEL-Befehl | QUIT-Befehl | Zugreifen auf die Visual FoxPro-API