Funktion, die 2 Ergebnisse liefert?

 

Ich muss 2 Ergebnisse aus einer Funktion zurückgeben. Ich kann sie trennen und eine Funktion für jedes Ergebnis erstellen, das ich brauche, aber das ist viel mehr Code und macht andere Dinge komplizierter. Ist dies mit MT4 möglich?

 

Überprüfung der Übergabe von Parametern ny Referenz:

int res1 func(int& res2, andere Parameter...)

 

Meinen Sie damit, dass Sie die Funktion zweimal ausführen und einen speziellen Parameter übergeben, um jedes Mal ein anderes Ergebnis zu erhalten? Ich nehme an, das könnte funktionieren...

Ich wünschte, ich könnte das einfach tun:

return(a,b);
 

nein,

int x;

int y=func(x, andere Parameter);

nach Aufruf x=5 und y=2;

int res1 func(int& res2, andere Parameter...)

{

res2=5

return(3);

}

 

Ich meine y=3

 

Wow, danke, dass Sie versuchen zu helfen, aber ich verstehe nicht, was Sie hier tun. Haben Sie eine Funktion vollständig codiert, die dies tut, dass Sie nur kopieren und hier einfügen könnte?

 

Es sieht immer noch so aus, als würde nur ein Ergebnis zurückgegeben - "3".

return(3);

?

 

Finden Sie einfach die Übergabe von Parametern per Referenz in der Mql4-Hilfe:

Im Allgemeinen bedeutet die Übergabe per Referenz, dass man eine aktuelle Variable von außen an die Funktion übergibt (mit &) und dass man ihren Wert innerhalb der Funktion ändern kann und dass die Variable immer noch da ist, wenn man vom Aufruf zurückkommt.

also int x wird auf 0 gesetzt.

innerhalb der Funktion setzen Sie x=5

wenn du von der Funktion zurückkommst, ist x=5 wie von der Funktion gesetzt, also hast du dein zweites Ergebnis von der Funktion erhalten, ohne 2 Ergebnisse zurückzugeben.

Funktionen geben niemals 2 Ergebnisse zurück, sondern nur eines.

 

OK, danke, irusoh1

 

Was in der Erklärung von irusoh1 fehlt, ist, dass die Variablen Array(s) sein müssen. Und eher die Rückkehr nicht spielen eine Rolle bei der Füllung/Änderung der Arrays, sondern ändern Sie es direkt nach Bedarf.

int Xarray[]; int Yarray[];

void Fun2result(int& Array[], int& Brray[], int pos)
{    Array[pos] = 2 + pos;
     Brray[pos] = 5 + pos;
} 
int start()
{  
    for(i=Bars-1; i>=0; i--)
       Fun2result(Xarray, Yarray, i); 
}

Viel Glück!

 

muss nicht ein Array sein