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