Symbolkonstanten

Symbole als Zeilenelemente in MQL5 - sind Indexe in Symbolvorrat Unicode. Sie sind Hexadezimalwerte, die in ganzzahlige Typen umgewandelt werden können und mit denen mit ganzzahligen Operationen manipuliert werden kann, solche wie Addition und Substrahieren.

Jedes einzelne Symbol in Anführungszeichen oder hexadezimaler ASCII-Kode des Symbols der Art  '\x10' ist eine Symbolkanstante und hat den Typ ushort. ZB Schreibung der Art  '0' ist ein numerischer Wert 30, der dem Index von Null in der Tabelle der Symbole entspricht.

Beispiel:

void OnStart()
  {
//--- bestimmen wir Symbolkanstanten 
   int symbol_0='0';
   int symbol_9=symbol_0+9; // erhalten wir das Symbol '9'
//--- geben wir Werte von Konstanten aus 
   printf("In dezimaler Form: symbol_0 = %d,  symbol_9 = %d",symbol_0,symbol_9);
   printf("In hexadezimaler Form: symbol_0 = 0x%x,  symbol_9 = 0x%x",symbol_0,symbol_9);
//--- fuegen wir Konstanten in eine Zeile hinzu
   string test=""
   StringSetCharacter(test,0,symbol_0);
   StringSetCharacter(test,1,symbol_9);
//--- so sehen sie in einer Zeile aus
   Print(test);
  }

Backslash ist ein Kontrollzeichen für Compiler beim Umgang mit Konstantzeilen und Symbolonstanten im Ausgangstext eines Programms. Einige Symbole, ZB einzelner Anführungsstrich ('), Doppelte Anführungszeichen ("), backslash  (\) und Kontrollsymbole können als Symbolkombination dargestellt werden, die mit backslash (\) anfaengt, entsprechend der unten angegebenewn Tabelle:

Symbolname

Mnemokode oder Darstellung

Aufzeichnung in MQL5

Numerischer Wert

neue Zeile (Zeilenvorschub)

LF

'\n'

10

horizontales Tabulieren  

HT

'\t'

9

Vorschub rückgeben

CR

'\r'

13

backslash

\

'\\'

92

einzelner Anführungsstrich    

'

'\''

39

Doppelanführungszeichen    

"

'\"'

34

hexadezimaler Kode

hhhh

'\xhhhh'

von 1 bis 4 hexadezimale Zeichen

dezimaler Kode

d

'\d'

dezimale Zahl von  0 bis 65535

Wenn das nach slash folgende Symbol sich von de aufgelisteten unterscheidet, ist das Ergebnis unbestimmt.

Beispiel

void OnStart()
  {
//--- erklären wir Symbolkanstanten 
   int a='A';
   int b='$';
   int c='©';      // Kode 0xA9
   int d='\xAE';   // Symbolkode ®
//--- geben wir Konstante für Abdrucken aus 
   Print(a,b,c,d);
//--- fuegen wir ein Symbol in die Zeile zu 
   string test="";
   StringSetCharacter(test,0,a);
   Print(test);
//--- Ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,0,b);
   Print(test);
//--- Ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,0,c);
   Print(test);
//--- Ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,0,d);
   Print(test);
//--- stellen wir Symbole als eine Zahl dar 
   int a1=65;
   int b1=36;
   int c1=169;
   int d1=174;
//--- setzen wir Symbol in die Zeile zu 
   StringSetCharacter(test,1,a1);
   Print(test);
//--- ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,1,b1);
   Print(test);
//--- ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,1,c1);
   Print(test);
//--- ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,1,d1);
   Print(test);
  }

Wir es schon oben angegeben wurde, ist der Wert von einer Symbolkonstante (oder Variable) Index in der Symboltabelle darstellt, da ein Index eine Ganzzahl ist, ist es zulaessig es verschieden zu schreiben.

void OnStart()
  {
//--- 
   int a=0xAE;     // Symbolkode ® entspricht dem Literal '\xAE'
   int b=0x24;     // Symbolkode $ entspricht dem Literal '\x24'
   int c=0xA9;     // Symbolkode © entspricht dem Literal '\xA9'
   int d=0x263A;   // Symbolkode O entspricht dem Literal '\x263A'
//--- geben wir Werte aus
   Print(a,b,c,d);
//--- fuegen wir Symbol in die Zeile hinzu 
   string test="";
   StringSetCharacter(test,0,a);
   Print(test);
//--- ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,0,b);
   Print(test);
//--- ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,0,c);
   Print(test);
//--- ersetzen wir Symbol in einer Zeile 
   StringSetCharacter(test,0,d);
   Print(test);
//--- Kodes der Farben 
   int a1=0x2660;
   int b1=0x2661;
   int c1=0x2662;
   int d1=0x2663;
//---fuegen wir Pikssymbol hinzu
   StringSetCharacter(test,1,a1);
   Print(test);
//--- fuegen wir Herzsymbol hinzu
   StringSetCharacter(test,2,b1);
   Print(test);
//--- fuegen wir Karosymbol hinzu
   StringSetCharacter(test,3,c1);
   Print(test);
//--- fuegen wir Treffsymbol hinzu 
   StringSetCharacter(test,4,d1);
   Print(test);
//--- Beispiel der Symbolliterale in der Zeile 
   test="Dame\x2660As\x2662";
   printf("%s",test);
  }

Interne Darstellung des Symbolliterals ist Typ ushort. Symbolkonstanten können die Werte von 0 bis 65535 annehmen.

Sehen Sie auch

StringSetCharacter(), StringGetCharacter(), ShortToString(), ShortArrayToString(), StringToShortArray()