Freigeben über


Rückgabe eines Wertes an Visual FoxPro

Welche Methode Sie verwenden, um einen Wert aus dem Programm an Visual FoxPro zurückzugeben, hängt davon ab, ob Sie ein ActiveX-Steuerelement oder eine FLL-Bibliothek erstellen.

Zurückgeben eines Wertes aus einem ActiveX-Steuerelement

Verwenden Sie in dem ActiveX-Steuerelement eine RETURN-Anweisung, um einen Wert aus dem Steuerelement an Visual FoxPro zurückzugeben. Wie das folgende Beispiel verdeutlicht, wird auf diese Weise genau ein Wert übergeben:

#define VERSION 101

// other code here

long CPyCtrl::GetVersion()
{
   // set the version number here in variable fVersion
   return VERSION;
}

Zurückgeben eines Wertes aus einer FLL-Bibliothek

Wenn Sie Werte aus einer FLL-Bibliothek zurückgeben, sollten Sie keine C- oder C++-Befehle, sondern API-Funktionen verwenden. Mit den folgenden Funktionen können Sie Werte an Visual FoxPro zurückgeben.

Anmerkung   Die nachstehend erläuterten API-Funktionen dürfen Sie nicht verwenden, um Werte aus einer OCX-Datei zurückzugeben. Verwenden Sie dort die RETURN-Anweisung. Die API-Rückgabefunktionen sollten nur in FLL-Bibliotheken verwendet werden.

Funktion Beschreibung
_RetChar(char *zeichenfolge) Stellt den Rückgabewert der Funktion auf eine Zeichenfolge ein, die durch einen Nullwert abgeschlossen ist.
_RetCurrency(CCY wwert, int breite) Stellt den Rückgabewert der Funktion auf einen Währungswert ein.
_RetDateStr(char *zeichenfolge) Stellt den Rückgabewert der Funktion auf ein Datum ein. Das Datum hat folgendes Format: mm/tt/jj[jj].
_RetDateTimeStr(char *zeichenfolge) Stellt den Rückgabewert der Funktion auf ein Datum und eine Zeit ein. Der Wert hat folgendes Format: mm/tt/jj[jj] hh:mm:ss
_RetFloat(double flt, int breite, int dez) Stellt den Rückgabewert der Funktion auf einen Gleitkommawert ein.
_RetInt(long iwert, int breite) Stellt den Rückgabewert der Funktion auf einen numerischen Wert ein.
_RetLogical(int flag) Stellt den Rückgabewert der Funktion auf einen logischen Wert ein. 0 wird als Falsch (.F.) angesehen. Jeder Wert ungleich 0 wird als Wahr (.T.) angesehen.
_RetVal(Value *wert) Übergibt eine vollständige Visual FoxPro Value-Struktur; jeder Visual FoxPro-Datentyp, mit Ausnahme von Memo, kann zurückgegeben werden. Sie müssen _RetVal( ) aufrufen, wenn Sie eine Zeichenfolge, die eingebettete Nullzeichen enthält, oder den Wert .NULL. zurückgeben möchten.

Anmerkung   Wenn Sie einen Wert zurückgeben müssen, der den Datentyp eines Objekts hat, verwenden Sie die _RetVal()-Funktion und belegen das Feld ev_object der jeweiligen Value-Struktur.

Das folgende Beispiel, Sum, nimmt einen Verweis auf ein numerisches Feld einer Tabelle entgegen und gibt mit _RetFloat die Summe der Werte zurück, die in dem Feld abgelegt sind:

#include <Pro_ext.h>

Sum(ParamBlk *parm)
{
// declare variables
double tot = 0, rec_cnt;
int i = 0, workarea = -1; // -1 is current workarea
Value val;

// GO TOP
_DBRewind(workarea);

// Get RECCOUNT( )
rec_cnt = _DBRecCount(workarea);

// Loop through table
for(i = 0; i < rec_cnt; i++)
{ 
   //Place value of the field into the Value structure
   _Load(&parm->p[0].loc, &val);

   // add the value to the cumulative total
   tot += val.ev_real;

   // SKIP 1 in the workarea
   _DBSkip(workarea, 1);
} 

// Return the sum value to Visual FoxPro
_RetFloat(tot, 10, 4); 
}
// The Sum function receives one Reference parameter
FoxInfo myFoxInfo[] = {
   {"SUM", Sum, 1,"R"} 
};
FoxTable _FoxTable = {
   (FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Wenn die aktuell geöffnete Tabelle ein numerisches Feld namens amount enthält, ruft die folgende Visual FoxPro-Programmzeile die Funktion auf:

? SUM(@amount)

Siehe auch

Übergeben und Empfangen von Parametern | Übergeben von Parametern an Visual FoxPro-API-Funktionen | Zugreifen auf die Visual FoxPro-API | Erweitern von Visual FoxPro mit externen Bibliotheken | Zugriff auf Visual FoxPro-Variablen und -Felder | Erstellung der API-Bibliothek