enum declaration

Einloggen oder registrieren, um einen Kommentar zu schreiben
amando
1437
amando  

Hallo,


in einer enum kann ich beim anlegen ja nur strings definieren

was mache ich aber, wenn ich da zahlen stehen haben will?


so zum Beispiel

enum Levels   // Fibo Levels
  {
   0.236,
   0.382,
   0.5,
   0.618,
   1
  };

was auch nicht geht ist mit (vereinfacht)

enum Levels   // Fibo Levels
  {
   
        "0.236"

  };

dann habe ich es probiert mit

#define


aber hier kann ich ja nur Zahlen definieren wie z.B

#define Pi 3.14


kann ich überhaupt zahlen in einer enum auswerten?

da die Inhalte ja eigentlich nur mit Integer übergeben werden??????


danke

Carl Schreiber
Moderator
7761
Carl Schreiber  
amando:

Hallo,


in einer enum kann ich beim anlegen ja nur strings definieren

was mache ich aber, wenn ich da zahlen stehen haben will?


so zum Beispiel

was auch nicht geht ist mit (vereinfacht)

dann habe ich es probiert mit


aber hier kann ich ja nur Zahlen definieren wie z.B


kann ich überhaupt zahlen in einer enum auswerten?

da die Inhalte ja eigentlich nur mit Integer übergeben werden??????


danke

Enum (siehe hier: https://www.mql5.com/de/docs/constants) dienen der "Erleichterung von Programmschreiben und gute Wahrnehmung von Ausgangsprogrammtexten.." und "... und haben den Typ int"

Wenn Eingabeparameter als Enums verwendet werden, werden nicht die Werte sondern deren Beschreibung angezeigt:

enum ENUM_TIMEFRAMES {
  PERIOD_CURRENT, // Aktueller Zeitrahmen
  PERIOD_M1, //  1 Minute
  PERIOD_M2, //  2 Minuten
  PERIOD_M3, //
  ...
}

input ENUM_TIMEFRAMES      TF;            // Zeitrahmen
Dokumentation zu MQL5: Konstanten, Enumerationen und Strukturen
Dokumentation zu MQL5: Konstanten, Enumerationen und Strukturen
  • www.mql5.com
für die Erleichterung von Programmschreiben und gute Wahrnehmung von Ausgangsprogrammtexten werden in der Sprache MQL5 vorbestimmte Standardkonstanten und Enumerationen vorausgesehen. Außerdem werden für Informationsspeicherung dienstliche Strukturen verwendet. Medium Zustand – beschreiben Eigenschaften eines mql5-Programms, geben...
amando
1437
amando  
Carl Schreiber:

Enum (siehe hier: https://www.mql5.com/de/docs/constants) dienen der "Erleichterung von Programmschreiben und gute Wahrnehmung von Ausgangsprogrammtexten.." und "... und haben den Typ int"

Wenn Eingabeparameter als Enums verwendet werden, werden nicht die Werte sondern deren Beschreibung angezeigt:

Danke Carl,

den link kenn ich, da war ich schon ;-)

habs mir genauso gedacht wie Du es beschrieben hast. Aber einen Versuch war es Wert.

Christian
2542
Christian  

Nur ganzahlige Aufzählungen. Keine doubles keine Strings

enum intervals  // Enumeration der benannten Konstanten 
   {
    month=1,     // Interval aus einem Monat 
    two_months,  // zwei Monate
    quarter,     // drei Monate - Quartal
    halfyear=6,  // Halbjahr
    year=12,     // Jahr - 12 Monate
   };

  • Zum Unterschied von  C++, ist die Größe der inneren Darstellung des aufzählbaren Typs in MQL5 immer 4 Byte. D.h. sizeof(months) gibt den Wert 4 zurück.
  • Zum Unterschied von C++, kann in MQL5 keine anonyme Enumeration erklärt werden. D.h. nach Schlüsselwort enum kann immer ein eindeutiger Name angegeben werden.


Gruß

Christian
2542
Christian  

Hab da noch was was es deutlicher macht. Kommt zwar von C ist aber vergleichbar


Aufzählungen

In manchen Fällen kommt es vor, dass man Dinge wie Monatsnamen, Wochentage oder Vergleichbares in seinem Programm darstellen möchte. Dies könnte man mittels Variablen erledigen.

Folgendes Beispiel soll die 4 möglichen Karten eines Skat-Spiels darstellen, wie wir es auf herkömmliche Art und Weise machen könnten. Wir verweden hier vorzugsweise Konstanten. Jede Karte ist durch eine Variable und dessen eindeutigen Wert identifizierbar.

const int kreuz=0, pik=1, karo=2, herz=3;
int karte = herz;
printf("Wert der Karte: %d\n", karte);

Wert der Karte: 3

Um das obige Beispiel zu vereinfachen, verwendet man Aufzählungen, englisch enumerations. Hierfür leiten wir die Aufzählung der Elemente mit dem Schlüsselwort enum ein. Danach folgt ein Block { }, in dem die Elemente mit Komma getrennt definiert werden. Folgendes Beispiel erzeugt genau die gleichen Variablen wie oben.

enum { kreuz, pik, karo, herz };
int karte = karo;
printf("Wert der Karte: %d\n", karte);

Standardmäßig beginnt die Werte-Skala bei 0. Die Werte der Elemente werden einfach hochgezählt. Hier verändern wir den Startwert, die Variablen haben somit nicht mehr die Werte 0-3, sondern 7-10.

enum { kreuz=7, pik, karo, herz };
printf("Kreuz: %d, Pik: %d, Karo: %d, Herz: %d\n", kreuz, pik, karo, herz);

Kreuz: 7, Pik: 8, Karo: 9, Herz: 10

Die Werte können natürlich auch explizit gesetzt werden.

enum { kreuz=11, pik=15, karo=17, herz=19 };
printf("Kreuz: %d, Pik: %d, Karo: %d, Herz: %d\n", kreuz, pik, karo, herz);

Kreuz: 11, Pik: 15, Karo: 17, Herz: 19

Einloggen oder registrieren, um einen Kommentar zu schreiben