Compiler Fehler MQL4/5 Switch Expression

 

Hallo zusammen , 

 

folgender Code wird unter MQL4 akzeptiert:

string GetUninitReasonText(int reasonCode)
{ 
   string text="";
   switch(reasonCode)
   {
      case REASON_ACCOUNT:
         text = "Account was changed"; break;
      case REASON_CHARTCHANGE:
         text = "Symbol or timeframe was changed"; break;
      case REASON_CHARTCLOSE:
         text = "Chart was closed"; break;
      case REASON_PARAMETERS:
         text = "Input-parameter was changed"; break;
      case REASON_RECOMPILE:
         text = "Program " + __FILE__ + " was recompiled"; break;
      case REASON_REMOVE:
         text = "Program " + __FILE__ + " was removed from chart"; break;
      case REASON_TEMPLATE:
         text = "New template was applied to chart"; break;
      default:
         text = "Another reason";
   }
   return text;
}

 Selber Code generiert unter MQL5 ein Ungültigen Switch Ausdruck Fehler ohne Zeilen und Reihen Angabe..

Auf den ersten Blick für mich verständlich.

GetUninitReasonText(int reasonCode) erwartet eine Zahl als Übergabe.

Und dann soll mit einem String verglichen werden. Was ja eigentlich nicht funktionieren kann.

 

Warum gibt es unter MQL4 Keine Fehlermeldung ?

 

Gruß 

 

1) Unter mql4 sollte die Funktion korrekt sein - aber warum schreibst Du nicht gleich:

string GetUninitReasonText(int reasonCode)
{ 
   switch(reasonCode)
   {
      case REASON_ACCOUNT:
         return("Account was changed");
      case REASON_CHARTCHANGE:
         return("Symbol or timeframe was changed");
      ....
ohne txt, ohne break,...


2) Vielleicht ist der Aufruf der Funktion in mql5 buggy? Ich sehe hier keinen Fehler - nur etwas umständlich ;)

3) Gibt es einen Compiler-Fehler oder einen Ausführungsfehler (_LastError oder Expert-tab) oder einen Fehler im Joural-Tab?

4) Versuch mal mit const - ungetestet, nur so ein Verdacht oder Ahnung(!) wegen Mql5 Doc: "The constant expression can't contain variables or function calls.":

string GetUninitReasonText(const int reasonCode) { ..

Wenn 4) funktioniert ist das in mql4 der Rückwärtskompatibel geschuldet!

 

hmmm , klappt auch nicht.

 

folgeden Fehlermeldung kommt.

 

illegal switch expression type          reihe1  zeile1

 Compiler Fehler ohne Nummer . Sieht nach einem "Fehler" ohne genau Herkunft.

Ansich schon komisch ohne angabe wo der Fehler liegt.

 

Der Code ist nicht aus meinem Kopf. Ich portiere den von 4 auf 5.

Möchte mal ein EA für ein Hedge-Konto im Köcher haben. 

Und mir war klar das du den gleich mal kürzt :-) 

Bis hier hin alles gut , nur der Fehler will nicht weg. Zeile 1 ist nichts.

 

so ...ab ins Wochenende ...Sonntag gehts weiter 

 

Versuch es mal mit der Lösung von hier?

Und das interessiert Dich vielleicht auch?

 

Neuer Tag frisches Gehirn.....Fehler konnte ich näher einkreisen und beseitigen

 

Durch die Angabe von keiner genauen Zeile und Spalte viel mir wieder ein das das ein Hinweis auf ein Fehler in  einer externe Datei sei.

Eben noch mal die ganze Funktion ausgeklammert ..Fehler bleibt.

Dann folgend //#include <tradealgorithms.mqh> ausgeklammert. Fehler weg !

 

Ich nutze diese hilfedatei gerne um am Anfang um ein fertiges Gerüst zum Senden der Orders zu haben .

Da muss ich wohl ein original erwischt haben denn den Fehler habe ich schon mal früher suchen und beseitigen müssen. Aber man vergisst ja auch viel :-) ....

schreibe es trotzdem Ausführlich damit andere nicht auch suchen müssen.

 

Gruß 

Grund der Beschwerde: