Funkcje konwersji:   StringToShortArray()

Funkcja int StringToShortArray() kopiuje i konwertuje symbole tekstowe jako kod Unicode do wartości liczbowych typu ushort i umieszca je w tablicy. Funkcja zwraca ilość skopiowanych symboli. Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

#property strict
void OnStart()
  {
   string text_value = "Monkey";

//--- tablice dynamiczne, do których zostaną skopiowane wartości kodów Unicode
   ushort array_1[];
   ushort array_2[];
   ushort array_3[];

//--- cały tekst "Monkey" przekonwertować na kody Unicode i umieścić w tablicy, na końcu dodać '\0'
   int    result_1 = StringToShortArray(text_value, array_1, 0, -1);  // result_1 = 7
   Print("1) Ilość skopiowanych symboli result_1 = ",result_1);

   int    result_2 = StringToShortArray(text_value, array_2);     // result_2 = 7
   Print("2) Ilość skopiowanych symboli result_2 = ",result_2);

//--- cały tekst "Monkey" przekonwertować na kody Unicode i umieścić w tablicy bez dodawania na końcu '\0'
   int    result_3 = StringToShortArray(text_value, array_3, 0, 6);   // result_3 = 6
   Print("3) Ilość skopiowanych symboli result_3 = ",result_3);

//--- wyświetlić kody Unicode dla odpowiednich symboli
   Print("4) Symbol 'M' jako kod Unicode = ",array_1[0]);
   Print("5) Symbol 'o' jako kod Unicode = ",array_1[1]);
   Print("6) Symbol 'n' jako kod Unicode = ",array_1[2]);
   Print("7) Symbol 'k' jako kod Unicode = ",array_1[3]);
   Print("8) Symbol 'e' jako kod Unicode = ",array_1[4]);
   Print("9) Symbol 'y' jako kod Unicode = ",array_1[5]);
   Print("10) Zamykajacy symbol \'\\0\' jako kod Unicode = ",array_1[6]);
  }

Rys. 1. Przykłady stosowania funkcji StringToShortArray().


Przy przekształceniu symboli tekstu na wartości kodu Unicode, funkcja także kopiuje \0, jako symbol zamykający tekst. Aby wykluczyć kopiowanie \0, należy dokładnie określić długość tekstu.

W powyższym przykładzie widać, że przy kopiowaniu całego tekstu, do tablicy zostało skopiowane 7 symboli choć słowo "Monkey" zawiera tylko 6 symboli liter (rys. 1 przykłady 1 i 2). W przykładach 4-9 zostały wyświetlone wartości kodów Unicode tych liter, a w przykładzie 10 wartość symbolu zamykajácy tekst \0 jako kod Unicode.

Jeśli trzeba przekonwertować symbole tekstowe na kody, w zależności od kodowania strony kodowej systemu operacyjnego, należy zastosować funkcję StringToCharArray() .