Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   function return mit mehreren Werten (http://www.expert-advisor.com/forum/showthread.php?t=6082)

AVT 09.04.18 20:48

function return mit mehreren Werten
 
Wo muß ich suchen, um rauszufinden, ob und wie man es hinkriegt, mehrere Werte gleichzeitig von einer Funktion rauszugeben und dann zu übernehmen. Beispiel:
Code:

int funcX()
{
  // calc a and b
  return(a,b);
}

Die letzte Zeile, also das return wird moniert, wobei ich nicht weiß, als was das angesehen wird. Bisher habe ich den Umweg über strings genommen, also Umwandeln in
Code:

string funcX()
{
  // calc a and b
  ReturnString=StringConcatenate(a,"§",b);
  return(ReturnString);
}

und dann das ganze über StringSplit wieder auseinandernehmen. Aber das muß doch auch einfacher gehen - außer 2 fast identische Funktionen zu schreiben (eine für a und eine für b).
Danke. AVT

traderdoc 09.04.18 21:18

Man kann nur 1 Wert per return zurückgeben.

Ansonsten muss man über die Referenzierung gehen, gemäß dieses Beispiels:

Code:

/+-------------------------------------------------------------------+
//| Parameterübergabe nach Verweis                                                |
//+------------------------------------------------------------------+
double SecondMethod(int  &i,  int  &j) {
  double res;
  i* = 2;
  j /= 2;

  res = i+j;
  return (res);
}
//+------------------------------------------------------------------+
//| Script program start function                                                    |
//+------------------------------------------------------------------+
void  OnStart () {
    int  a = 14, b = 8;
    Print ("a und b vor dem Aufruf:", a, " ", b);
    double d = SecondMethod(a,b);
    Print ("a und b nach dem Aufruf:", a, " ", b);
}
//+------------------------------------------------------------------+
//--- Ergebnis der Scriptdurchführung
//  a und b vor dem Aufruf: 14 8
//  a und b nach dem Aufruf: 28 4

Hierbei wird ein Wert über return zurückgegeben und die anderen beiden Ergebnisse
zu a und b werden nach der Berechnung an die Referenz zurückgegeben.

Arrays können z.B. nur!! über Referenzierung in einer Funktion übergeben werden.

traderdoc

AVT 09.04.18 21:53

Zitat:

Zitat von traderdoc (Beitrag 40895)
Man kann nur 1 Wert per return zurückgeben.
Ansonsten muss man über die Referenzierung gehen, gemäß dieses Beispiels:
... snip ...

Hierbei wird ein Wert über return zurückgegeben und die anderen beiden Ergebnisse
zu a und b werden nach der Berechnung an die Referenz zurückgegeben.

Arrays können z.B. nur!! über Referenzierung in einer Funktion übergeben werden.

traderdoc

:cool: Danke traderdoc! Das erleichtert alles ungemein. AVT


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:10 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum