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:
|
|
|
|
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()