Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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_objectder 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