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