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.
#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() .