Новая версия платформы MetaTrader 5 build 5370: улучшения в веб-версии - страница 33

 
Alain Verleyen #:
Итак, каков результат?
 
 
Alain Verleyen #:

Попробуйте вот это:

Здесь плохо то, что надо каким-то неизвестным образом угадать, какой символ надо указать в исходном коде, чтобы увидеть нужный символ из Wingdings на графике терминала. В справке и в таблице символов Windows мы можем однозначно посмотреть число, являющееся кодом нужного символа. Для такой стрелки это число 233. Символ "é" имеет другой код. Во первых, он уже двухбайтный. Для исходников сейчас используется UTF-8 или UTF-16 LE, поэтому в редакторе мы без проблем видим этот символ. Во-вторых, даже если оставить только 1 младший байт от кода этого символа, то он не равен 233.

Код для проверки

int OnInit(void)
 {
   string txt = "é";
  
   uchar chars[];
   
   StringToCharArray(txt, chars, 0, WHOLE_ARRAY, CP_ACP);
   Print("Using CP_ACP:");
   ArrayPrint(chars);
   
   StringToCharArray(txt, chars, 0, WHOLE_ARRAY, CP_OEMCP);
   Print("Using CP_OEMCP:");
   ArrayPrint(chars);
   
   StringToCharArray(txt, chars, 0, WHOLE_ARRAY, CP_SYMBOL);
   Print("Using CP_SYMBOL:");
   ArrayPrint(chars);
   
   StringToCharArray(txt, chars, 0, WHOLE_ARRAY, CP_UTF8);
   Print("Using CP_UTF8:");
   ArrayPrint(chars);
  
  string arrowObj = "Arrow";
  if(ObjectFind(0, arrowObj) < 0)
   {
    ObjectCreate(0, arrowObj, OBJ_LABEL, 0, 0, 0);
    ObjectSetInteger(0, arrowObj, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
    ObjectSetInteger(0, arrowObj, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
    ObjectSetInteger(0, arrowObj, OBJPROP_XDISTANCE, 50);
    ObjectSetInteger(0, arrowObj, OBJPROP_YDISTANCE, 50);
    ObjectSetInteger(0, arrowObj, OBJPROP_FONTSIZE, 14);
    ObjectSetString(0, arrowObj, OBJPROP_FONT, "Wingdings");
    ObjectSetInteger(0, arrowObj, OBJPROP_BACK, false);
   }
  ObjectSetString(0, arrowObj, OBJPROP_TEXT, txt);
  return(INIT_SUCCEEDED);
 }

даёт такой результат:

2025.12.16 18:21:23.260 ex3 (EURUSD,H1) Using CP_ACP:
2025.12.16 18:21:23.260 ex3 (EURUSD,H1) 101   0
2025.12.16 18:21:23.260 ex3 (EURUSD,H1) Using CP_OEMCP:
2025.12.16 18:21:23.260 ex3 (EURUSD,H1) 101   0
2025.12.16 18:21:23.260 ex3 (EURUSD,H1) Using CP_SYMBOL:
2025.12.16 18:21:23.260 ex3 (EURUSD,H1) 101   0
2025.12.16 18:21:23.260 ex3 (EURUSD,H1) Using CP_UTF8:
2025.12.16 18:21:23.260 ex3 (EURUSD,H1) 195 169   0

Поэтому добыть нужный символ не так-то просто. Вот рабочий рецепт:

Формируем нужные символы, например, в приложении Таблица символов Windows, и нажимаем кнопку копировать:


Попытка вставить их сразу в MetaEditor заканчивается неудачей:


Но если вставить в другом редакторе, например, в форумном, то получится "éíòµ". Отсюда их можно скопировать повторно и вставить в MetaEditor.

VS Code сразу корректно вставляет их, скопированных из Таблицы символов и сохраняет их


Открываем в MetaEditor и всё в порядке:




В общем, исходный код будет действительно короче, но придется немного повозиться с правильной вставкой нужных символов.

 
Yuriy Bykov # :

Здесь плохо то, что надо каким-то неизвестным образом угадать, какой символ надо указать в исходном коде, чтобы увидеть нужный символ из Wingdings на графике терминала. В справке и в таблице символов Windows мы можем однозначно посмотреть число, являющееся кодом нужного символа. Для такой стрелки это число 233. Символ "é" имеет другой код. Во первых, он уже двухбайтный. Для исходников сейчас используется UTF-8 или UTF-16 LE, поэтому в редакторе мы без проблем видим этот символ. Во-вторых, даже если оставить только 1 младший байт от кода этого символа, то он не равен 233.


«é» — это код 233 в Windows-1152.

В настоящее время использование русских символов больше не работает для предоставления правильного кода. Использование CharToString(233) на вашей стороне означает использование Windows-1151.

Это ошибка в текущей бета-версии. Разработчикам MQ рекомендуется сообщить об этом.

 
Vladislav Boyko # :

Баг DRAW_COLOR_LINE. Смотрите видео из кармана - прокрутка графика приводит к смене цвета линни с зеленого на синий.

Я воспроизвел, используя код из документации (я также прикрепил его). Обратите внимание, что я воспроизодил при отсутствии тиков (воскресенье).

Баг найден пользователем mvillar83 , начало обсуждения здесь .

Похоже, проблема исправлена в версии 5485.
 
MetaQuotes, сделайте, пожалуйста, утилиту для построения single-file версии исходного кода (для распространения) - огромная просьба!
 
Vladislav Boyko #:
MetaQuotes, сделайте, пожалуйста, утилиту для построения single-file версии исходного кода (для распространения) - огромная просьба!
Спасение утопающих - дел рук самих утопающих - https://www.mql5.com/en/code/27955
MQL5 Program Packer
MQL5 Program Packer
  • 2020.02.18
  • www.mql5.com
This is MQL5 project packer: assemble all source and resource files from dependencies into a single ZIP.
 
fxsaber # :
b5370, изменение некоторых настроек Тестера на сказывается на их значениях в буфере обмена через CTRL+C.

На скрине показаны настройки, которые не меняют значения.


Как пример, я поменял некоторые значения.



Результат CTRL+C в Тестере и CTRL+V в Блокноте.

Видно, что измененные настройки не копируются. Просьба исправить. Спасибо.

Строка для поиска Oshibka  152.

Пожалуйста, подтвердите, что проблема устранена.

С 5488 у меня нет проблем с сочетанием клавиш CTRL+C / CTRL+V.

 
Alain Verleyen #:

Пожалуйста, подтвердите, что проблема устранена.

С 5488 у меня нет проблем с сочетанием клавиш CTRL+C / CTRL+V.

Исправлено, спасибо.

ЗЫ Просьба цитировать через "карман" - там по ссылке перейти можно на оригинальное сообщение.

 
fxsaber # :

Исправлено, спасибо.

ЗЫ Просьба цитировать через "карман" - там по ссылке перейти можно на оригинальное сообщение.

Вы также можете нажать на ссылку «#», чтобы перейти к исходному сообщению.
 
Alain Verleyen #:
Вы также можете нажать на ссылку «#», чтобы перейти к исходному сообщению.
Не знал, спасибо!