Build 1571. StringLen не любит слово "code" в названии переменной?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladimir Karputov
Модератор
182956
Vladimir Karputov  
MetaTrader 5 x64 build 1571 started (MetaQuotes Software Corp.)
Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120M  @ 2.50GHz, RAM: 4365 / 8077 Mb, HDD: 316430 / 476372 Mb, GMT+02:00
C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

Пример кода:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                      Copyright 2017, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property script_show_inputs
//---
input string text_input="10";
input string   InpCode="‭10‬";
//---
string text="10";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("text_input: ",text_input,", StringLen(text_input)=",IntegerToString(StringLen(text_input)));
   Print("InpCode: ",InpCode,", StringLen(InpCode)=",IntegerToString(StringLen(InpCode)));
   Print("text: ",text,", StringLen(text)=",IntegerToString(StringLen(text)));
  }
//+------------------------------------------------------------------+

Результат:

2017.04.05 08:27:48.177 Test_ru (EURUSD,D1)     text_input: 10, StringLen(text_input)=2
2017.04.05 08:27:48.177 Test_ru (EURUSD,D1)     InpCode: ‭10‬, StringLen(InpCode)=4
2017.04.05 08:27:48.177 Test_ru (EURUSD,D1)     text: 10, StringLen(text)=2

Заменим входные переменные:

2017.04.05 08:29:08.831 Test_ru (EURUSD,D1)     text_input: qw, StringLen(text_input)=2
2017.04.05 08:29:08.831 Test_ru (EURUSD,D1)     InpCode: qw‬, StringLen(InpCode)=3
2017.04.05 08:29:08.831 Test_ru (EURUSD,D1)     text: qw, StringLen(text)=2


Как только в имени входного параметра есть слово "Code", функция StringLen начинает чудить - вместо "2" (для примеров выше) выдаёт или "4" или "3"".

fxsaber
16799
fxsaber  
Все правильно выдает... Сотрите "10" и наберите заново.
Vladimir Karputov
Модератор
182956
Vladimir Karputov  

Да, после стирания и перенабора заново, длина строки считается правильно - значит в моём примере прицепился какой-то символ. Остаётся вопрос: набирал я в анг. раскладке, прямо в MetaEditor'e - то есть не было никакого "Copy-Paste" - откуда взяться мусору в строковой переменной?


Добавлено: если скопировать код из поста () и вставить в скрипт - ошибка появляется снова.

Vladimir Karputov
Модератор
182956
Vladimir Karputov  

Похоже вся проблема в значении входной переменной "InpCode" - в тексте "10". Если посмотреть в HTML режиме, то даже браузеру, что-то не нравится в этой тексте "10":

Инородный символ?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий