Funkcje konwersji:   StringToCharArray()

Funkcja int StringToCharArray() kopiuje i konwertuje symbole tekstowe, w zależności od kodowania strony kodowej systemu operacyjnego, do wartości liczbowych typu uchar i umieszcza 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 ANSI
   uchar  array_1[];
   uchar  array_2[];
   uchar  array_3[];

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

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

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

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

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


Przy przekształceniu symboli tekstu na wartości kodu ANSI, 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 liter (rys. 1 przykłady 1 i 2). W przykładach 4-9 zostały wyświetlone wartości kodów ANSI tych liter. W przykładzie 10 wartość symbolu zamykający tekst \0 jako kod ANSI.

Jeśli trzeba przekonwertować symbole tekstowe na kody Unicode, należy zastosować funkcję StringToShortArray() .