Новая версия MetaTrader 4 Client Terminal 392 - страница 10

 
Alexandr27:

Снова к разработчикам! Профукал много денег из-за этого. Очень давно это заметил, но после очередного неведомого слива в очередном билде MT4 выкладываю баг, так как одолело не по детски. И это проблема не конкретного билда, а всех.

.............................

то всё начинает нормально работать. Но если мне нужно выполнить длинное логическое условие A&&B||A&&C||C&&D&&E||E&&A&&B, которое и так громозкое, то без громождения лишних скобок мне просто не обойтись! Исправьте наконец эту заразу, чтобы голова больше не болела. В других языках ведь, всё работает нормально: C++, Java, PHP, JS, VB, C#, delphi...


Это неописанная особенность языка давно известна. Тут другой приоритет выполнения. Всегда скобки ставлю. Не было проблем с этим.
 
Zhunko:

Это неописанная особенность языка давно известна. Тут другой приоритет выполнения. Всегда скобки ставлю. Не было проблем с этим.

с одной стороны это таки описанный приоритет

https://docs.mql4.com/ru/basis/operations/rules

Для изменения порядка выполнения операций применяются круглые скобки, которые имеют высший приоритет.
Внимание: приоритет выполнения операций в языке MQL4 несколько отличается от приоритета, принятого в языке Си.

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

 
sergeev:

с одной стороны это таки описанный приоритет

https://docs.mql4.com/ru/basis/operations/rules

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

Да. Только сейчас увидел описание этого случая: "Чем выше по таблице...".

Раньше не обращал внимания.

 
Alexandr27:

Снова к разработчикам! Профукал много денег из-за этого. Очень давно это заметил, но после очередного неведомого слива в очередном билде MT4 выкладываю баг, так как одолело не по детски. И это проблема не конкретного билда, а всех.

В любом языке программирования условие && выполняется перед || и скобки ( ) соответственно имеют приоритет и последовательность выполнения условий производится слева направо, но в выше указанном примере условие Переменная2<Функция2() никогда не выполняется! Даже если оно истинно! Впрочем, если заключить второй кусок условия в скобки, чтобы в итоге получилось:



Читайте документацию по MQL4 - Приоритеты и порядок выполнения операций

 
sergeev:

с одной стороны это таки описанный приоритет

https://docs.mql4.com/ru/basis/operations/rules

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

Именно эту статью вижу впервые. И врядли я мог ее не заметить, скорее всего ее раньше небыло. А в тех, по которым изучал MQL4, был такой приоритет: ( ), &&, ||.

И работу всегда проверяю. Дело в том, что язык MQL (4 и 5) оказывается настолько убогий, что не позволяет выявить данные нюансы. Так как большинство проблем с которыми сталкивался, оказывается являются особенностями языка. А в эксперте содержится алгоритм, проверить работу которого не позволяют ни тестер, ни демо счет, как раз из-за особенностей языка.

И очень жаль, что данный недочет с приоритетами, является встроенным в язык по умолчанию.

 
Alexandr27:

Именно эту статью вижу впервые. И врядли я мог ее не заметить, скорее всего ее раньше небыло.

В 2006 году она точно была.
 
Alexandr27:

Дело в том, что язык MQL (4 и 5) оказывается настолько убогий, что не позволяет выявить данные нюансы. Так как большинство проблем с которыми сталкивался, оказывается являются особенностями языка.

Плохому танцору.........
 
Конечно, надо уметь пользоваться тем, что есть, но это не запрещает попросить, что-нибудь у разработчиков :-))
 
dimonsky:


да, только что эдитор вылетел три раза. два раза после выделения кода и нажатия ктрл+с, а еще раз - после выделения кода и нажатия кнопки Делит.

Сделайте что-нибудь, пожалуйста. невозможно код править.

добавлено через 5 мин:

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

Это в каком билде происходит?

В последнем билде мы исправили ряд ошибок с падениями на редактировании текста.

 
Zhunko:
У МЭ4 есть ещё один глюк. Если установить табуляцию на 1 символ, то перемещение курсора по вертикали кнопками вверх/вниз происходит ступенчато со смещением.
Это исправлено, будет в следующем билде.