ИЗВЕСТНЫЕ ОШИБКИ ПЛАТФОРМЫ МТ4 (Реестр ошибок)

 

Эта тема создана для информирования разработчиков о найденных ошибках в работе торгового терминала МТ4 и реализации языка программирования MQL4.

Посты в этой теме должны содержать только ссылки на другие темы с обсуждения найденных ошибок или следующие обязательные пункты регистрации ошибки в этой теме:

  1. Краткое (произвольное) название ошибки
  2. Описание (так же желательно не очень пространное) симптомов проявления ошибки.
  3. Если необходимо - сопровождающие описание скриншоты.
  4. Объяснение каким боком эта ошибка может вылезть разработчику.
  5. Дата устранения ошибки и номер релиза начиная с которого ошибка устранена (добавляется после устранения ошибки).

Обсуждение найденых ошибок производится в другой теме ИЗВЕСТНЫЕ ОШИБКИ ПЛАТФОРМЫ МТ4 (Обсуждение ошибок).

Эта тема должна остаться просто реестром-справочником ошибок.

 

1) Ошибки в конекстной замене

2) Попытался я сделать глобальную замену в тексте str на s_str. Вызвал окошко - ввел тексты - нажал кнопочку "заменить все" .... Metaedit-ор ушел в глухой цикл: на экране все дергается и никак замена не закончится. Убил его и сделал тоже самое ручками пошагово. Вот что получается: первые два вхождения найдены и заменены правильно а вот на третьем происходит какоето смещение и текст не заменяется :(

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

Вот (демо)код на котором это происходит:

int start()
  {
   string str = "01234567890";
   str = StringSubstr(str, 3);
   Print(str);
  }

220 - Build


Вот строчка кода в которой глючит ваш поиск

Signal = Calc_Signal(Signal_Name, s, SymbolsNames[n], TF_Period[i], MarkerTime, ShortPeriod, LongPeriod, MethodMA, AppliedPrice);

эта строчка для проверки была единственная вставленная в стандартный шаблон вновь создаваемого советника.

смещение влево происходит на столько символов, сколько поисковой строки найдется до правильной поисковой комбинации.

В моей строчке до индекса [n] три буквы n:

Signal = Calc_Signal(Signal_Name, s, SymbolsNames[n], ....

вот и сместилась отметка отметка выделения найденного фрагмента на такоеже к-во символов назад. Если убрать\добавить несколько буковок n - неправильное смещение сместится на соответствующую величину.

Где то в коде редактора есть очепятка или логическая ошибка.
 

Неправильное отображение подсказки в текстовых объектах

когда на чарте есть два перекрывающихся текстовых объекта, то при на наезде мышкой на их общую зону выдается подсказка по НИЖНЕМУ объекту, а он может быть полностью скрыт ВЕРХНИМ, и возникает непонятка, почему по видимому объекту над которым висит мышь выдается НЕ ЕГО подсказка: как на этом скрине - сверху линия со знаками равенства и при наезде мыши на нее хочется видеть именно ее подсказку (я этот "трюк" использую чтобы показать дополнительные сведения об объекте), а выдается сами видите что :(


Я так думаю что тут тоже все просто: просто сменить порядок просмотра объектов при поиске текста: если сейчас цикл идет от первого объекта к последнему for(i=0;i<ObjectsTotal();i++) то его надо заменить на обратный for(i=ObjectsTotal();i>=0;i--) ну или наоборот ;)

 

PenCollector: not enough space in array.

Исправлена в 221 билде.

 

сколько кодю всегда напрягал мелкий глюк в МетаЕдиторе

проявлется глюк только при редактировании кода содержащего более тысячи строк

в случае неудачной компиляции кликая на список ошибок курсор не перемещается на участок кода с ошибкой по указанному адресу (строка/колонка)

 

Редактор MQL не проверяет, что файл был изменен без его участия, когда я переключаюсь на него или запускаю снова. Приходится закрывать/открывать файл.


"Замена" в редакторе не развита, поэтому юзаю NotePad++

 

Проблема с параметрами по умолчанию.


Библиотека Test.mq4

#property library

void TestFunction(int param1, int param2 = EMPTY)
{
   Print("TestFunction ", param1, "  ", param2);
}


Ашник TestHeader.mqh

#import "Test.ex4"
   void TestFunction(int param1, int param2 = EMPTY);
#import


Советник TestXpert.mq4

#include <TestHeader.mqh>

int start()
{
   TestFunction(100);
   
   return(0);
}


При компиляции советника выдается:

')' - wrong parameters count F:\...\experts\TestXpert.mq4 (5, 20)

Файлы:
testxpert.mq4  1 kb
test.mq4  1 kb
 
TheXpert писал(а) >>

Проблема с параметрами по умолчанию.

Библиотека Test.mq4

Ашник TestHeader.mqh

Советник TestXpert.mq4

При компиляции советника выдается:

')' - wrong parameters count F:\...\experts\TestXpert.mq4 (5, 20)

Это - не ошибка, а явно описанное поведение https://docs.mql4.com/ru/basis/preprosessor/import

"Параметры, передаваемые в импортируемые функции (как из EX4, так и из DLL-модулей), не могут иметь значения по умолчанию."

 

Запустил советник .Посмотрел результаты, исправил, перекомпилил ошибок 0 . Запустил в тестер, на тестирование пошел старый вариант, проверил контрольным Print .

Победил - создав новый советник с другим именем .

 
Добрый день, у меня возникла странная ошибка 4023 при вызове функции из самонаписанной dll, причем одна функция из dll нормально вызывается, другая нет, что это за ошибка, не смог найти на нее описание, помогите пожалуйста.