Update MetaEditor MT5 auf Build 2085 vom 13.Juni 2019 - Seite 2

 

@Chris70: Vollkommen richtig.

@Andreas: Das hat auch nicht mit einer früheren Version des Compilers funktionieren können.

Versuch doch mal die switch-Anweisung bei solchen Konstruktionen. Sind 'imho' übersichtlicher und schneller als multiple if then else Konstruktionen.

Verwende den Constructor zum Initialisieren von Variablen.

Ich würde ähnliches etwa so machen:

enum ENUM_AMA_ZONE
{
  AMA_ZONE_INIT,
  AMA_ZONE_BUY,
  AMA_ZONE_SELL,
};

class CPanelControls
{
   private:
      ENUM_AMA_ZONE amaValue;
   public:
      void CPanelControls:: CPanelControls(void){amaValue = AMA_ZONE_INIT;};  // initialization in constructor
      void CPanelControls::~CPanelControls(void){};                           // destructor not needed but must be defined, does nothing

      bool CPanelControls::LoadStaticPanel(void);
};

bool CPanelControls::LoadStaticPanel(void)
{
   switch(amaValue)
     {
      case AMA_ZONE_INIT:
         // some code
         break;            // could be also a return true or false
      case AMA_ZONE_BUY:
         // some code
         break;            // could be also a return true or false
      case AMA_ZONE_SELL:
         // some code
         break;            // could be also a return true or false
     }   
    return(true);
}

Ich hoffe du siehst den Unterschied.

 

Chris, das macht Sinn! Du bist der erste, der mir den Umgang mit ENUM Deklarationen nachvollziebar erklärt!  Ich bin der "Metatrade Logik" gefolgt,

(danke für diese Eselsbrücke..) die hier nicht greift. Nur: Warum bin ich über 2 Jahre damit klargekommen? Erst das Compiler Update hat mich in

diesen Schlamassel gebracht, was im Nachhinein ja auch richtig ist...

Ich probiere es in den nächsten Tagen aus, scheint mit aber sowas von sinnvoll, daß ich hoffe, Dir mit einem kurzen "Paßt!" zu danken!

Gruß

Andreas

 

Otto, auch Dir Dank für die Feststellung, das das letzlich nicht gehen konnte, muß aber in einem Punkt widersprechen: das vorherige Metaeditor Build

hat das alles "geschluckt"!  For whatever reason... Nebenbei, Du hast einen guten Tip zu der Case Konstruktion geliefert. Ich komme wieder - mit einer Erfolgsmeldung!


Nochmal danke!

Andreas

 

..kurz und bündig: Alles wieder gut!! Die Enums Deklaration hat der neue Compiler "etwas" genauer genommen und jetzt ist alles wieder

im grünen Bereich. Aber die meiste  Zeit habe ich mit der Lokalisierung des "internal error 112"  als Reaktion auf die falsche Deklaration gebraucht.

Besser: internal error 112 weist auf keine Programmstelle hin, liefert Zeile/Spalte 0/0. Nach vergeblichen Windows Ursachen Forschung dann Stück für

Stück das Programm "zurückgebaut", auskommentiert usw. und so stieß die Indizienkette auf das Enums Konstrukt. Das soll einer wissen...


Also nochmals herzlichen Dank für diese Unterstützung!

Gruß

Andreas

 

..kurz und bündig: Alles wieder gut!! Die Enums Deklaration hat der neue Compiler "etwas" genauer genommen und jetzt ist alles wieder

im grünen Bereich. So war Deine Erläuterung dazu absolut richtig und hilfreich! Aber die meiste  Zeit habe ich mit der Lokalisierung des

"internal error 112"  als Reaktion auf die falsche Deklaration gebraucht. Besser: internal error 112 weist auf keine Programmstelle hin,

liefert Zeile/Spalte 0/0. Nach vergeblichen Windows Ursachenforschung dann Stück für Stück das Programm "zurückgebaut", auskommentiert usw.

und so stieß die Indizienkette auf das Enums Konstrukt. Das soll einer wissen...


Also nochmals herzlichen Dank für diese Unterstützung!

Gruß

Andreas