Karakter Sabitleri

MQL5 dilindeki bir dizginin elemanları Unicode karakter kümesi içindeki işaretlerdir. Bunlar tamsayılara dönüştürülebilen ve toplama çıkarma gibi tamsayı işlemleriyle manüple edilebilen onaltılık değerlerdir.

Tırnak işaretleri içindeki her tekil karakter veya '\x10' gibi bir karakterin onaltılık ASCII kodu, bir karakter sabitidir ve ushort tipindedir. Örneğin '0' tipinde bir kaydın sayısal değeri 30'dur. Bu, karakterler tablosunda sıfır işaretinin indisine karşılık gelir.

Örnek:

void OnStart()
  {
//--- karakter sabitlerini tanımla
   int symbol_0='0';
   int symbol_9=symbol_0+9; // '9' sembolünü al
//--- sabitlerin çıktı değerleri
   printf("Ondalık biçimde: symbol_0 = %d,  symbol_9 = %d",symbol_0,symbol_9);
   printf("Onaltılık biçimde: symbol_0 = 0x%x,  symbol_9 = 0x%x",symbol_0,symbol_9);
//--- sabitleri bir dizgiye gir
   string test=""
   StringSetCharacter(test,0,symbol_0);
   StringSetCharacter(test,1,symbol_9);
//--- bir dizgide böyle görünürler
   Print(test);
  }

Ters-bölü (\) işareti, programın kaynak metnindeki sabit dizgilerle ve karakter sabitleriyle çalışırken kullanılan bir kontrol karakteridir. Bazı semboller (örneğin tek tırnak ('), çift tırnak ("), ters-bölü (\) ve kontrol karakterleri) ters-bölü işaretiyle (\) başlayan sembol kombinasyonları şeklinde, aşağıdaki tabloya göre temsil edilebilirler:

Karakter ismi

Hatırlatıcı kod veya simge

MQL5 içindeki kayıt

Nümerik değer

yeni satır (satır atlama)

LF

'\n'

10

yatay sekme  

HT

'\t'

9

satır başı

CR

'\r'

13

ters-bölü

\

'\\'

92

tek tırnak  

'

'\''

39

çift tırnak  

"

'\"'

34

onaltılık kod

hhhh

'\xhhhh'

1 ile 4 arası onaltılık karakterler

ondalık kod

d

'\d'

0 ile 65535 arası ondalık sayılar

Ters-bölü işaretinin ardından, yukarıda tanımlanmayan şekilde bir karakter geliyorsa sonuç tanımsızdır.

Örnek

void OnStart()
  {
//--- karakter sabitlerini bildir
   int a='A';
   int b='$';
   int c='©';      // kod 0xA9
   int d='\xAE';   // ® sembolünün kodu
//--- çıktı sabitlerini çıktıla
   Print(a,b,c,d);
//--- dizgiye bir karakter ekle
   string test="";
   StringSetCharacter(test,0,a);
   Print(test);
//--- dizgideki bir karakterin yerini değiştir
   StringSetCharacter(test,0,b);
   Print(test);
//--- dizgideki bir karakterin yerini değiştir
   StringSetCharacter(test,0,c);
   Print(test);
//--- dizgideki bir karakterin yerini değiştir
   StringSetCharacter(test,0,d);
   Print(test);
//--- karakteri bir sayı şeklinde ifade et
   int a1=65;
   int b1=36;
   int c1=169;
   int d1=174;
//--- dizgiye bir karakter ekle
   StringSetCharacter(test,1,a1);
   Print(test);
//--- dizgiye bir karakter ekle
   StringSetCharacter(test,1,b1);
   Print(test);
//--- dizgiye bir karakter ekle
   StringSetCharacter(test,1,c1);
   Print(test);
//--- dizgiye bir karakter ekle
   StringSetCharacter(test,1,d1);
   Print(test);
  }

Yukarıda bahsedildiği gibi, bir karakter sabitinin (veya değişkeninin) değeri, karakterler tablosundaki bir karakterin indisidir. Tamsayı değerli indis farklı yollarla yazılabilir.

void OnStart()
  {
//--- 
   int a=0xAE;     // ® işaretinin kodu '\xAE' sözcüğüne karşılık gelir
   int b=0x24;     // $ işaretinin kodu '\x24' sözcüğüne karşılık gelir
   int c=0xA9;     // © işaretinin kodu '\xA9' sözcüğüne karşılık gelir
   int d=0x263A;   // ☺ işaretinin kodu '\x263A' dizgisine karşılık gelir
//--- değerleri göster
   Print(a,b,c,d);
//--- dizgiye bir karakter ekle
   string test="";
   StringSetCharacter(test,0,a);
   Print(test);
//--- dizgideki bir karakterin yerini değiştir
   StringSetCharacter(test,0,b);
   Print(test);
//--- dizgideki bir karakterin yerini değiştir
   StringSetCharacter(test,0,c);
   Print(test);
//--- dizgideki bir karakterin yerini değiştir
   StringSetCharacter(test,0,d);
   Print(test);
//--- iskambil kartlarının kodları
   int a1=0x2660;
   int b1=0x2661;
   int c1=0x2662;
   int d1=0x2663;
//--- bir maça karakter ekle
   StringSetCharacter(test,1,a1);
   Print(test);
//--- bir kupa karakter ekle
   StringSetCharacter(test,2,b1);
   Print(test);
//--- bir karo karakter ekle
   StringSetCharacter(test,3,c1);
   Print(test);
//--- bir sinek karakter ekle
   StringSetCharacter(test,4,d1);
   Print(test);
//--- dizgi içindeki karakter sözcükleri örneği
   test="Queen\x2660Ace\x2662";
   printf("%s",test);
  }

Karakter sözcüklerinin içsel temsilleri ushort tipine sahiptir. Karakter sabitleri 0 ile 65535 arası değerler alabilir.

Ayrıca Bakınız

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