Будьте готовы к выходу свежего MetaTrader 4 с обновленным языком MQL4 - страница 2

 
artmedia70:
И там всё чудно. У каждой переменной свой блок {}. В нём она и видна.
Это в новом так, а в старом нет.
 
artmedia70:

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

И мне в старых кодах не мешает. А в новых - не будет.

Причем здесь стиль, не понятно. А то что не мешает не верю.
 
sandex:
Причем здесь стиль, не понятно. А то что не мешает не верю.

Стиль? Ну как же?

Print("Моя цифиря = "+var1); или

Print("Моя цифиря = "+DoubleToStr(var1,2));

А?

И... знаете ... не мешает ...

 
sandex:
Это в новом так, а в старом нет.

А в старом вы разве могли объявить переменную с тем же именем, что уже есть, но в другом блоке кода внутри start()? Не смешите.

Поэтому таких ошибок у вас просто быть не может при компиляции старых кодов в новом компиляторе.

 
revers45:

Если библиотеки MQL4 и MQL5 будут унифицированы, то в перспективе появится возможность написания универсальных оветников, скриптов и индикаторов, но для этого наверное потребуется программная идентификация версий (MT4 || MT5), с помощью макросов во время компиляции или рантайм функций.

Может такая возможность уже предусмотрена, тогда подскажите.

https://www.mql5.com/ru/docs/basis/preprosessor/conditional_compilation
Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
  • www.mql5.com
Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif) - Документация по MQL5
 
Renat:
Уже сделали, включая графические обьекты.

Например, панели можно стоить для обоих платформ.

Вау. Вот за это - огромное спасибо.  

Меня больше интересуют не "свистелки и перделки", а внутренние базовые классы типа CArrayObj.

 
sandex:

У программистов добавится работу.

Все коды придется править. Избавляясь от таких сообщений:

 implicit conversion from 'number' to 'string' ExpCandleHighLowBreakdown_v3.mq4 34 39

possible loss of data due to type conversion ExpCandleHighLowBreakdown_v3.mq4 65 77

Странно - таких сообщений быть не должно. Хотя это и предупреждения, они означают, что код написан "опасно", допускает конверсию там, где программист ее не указал явно. Согласен с теми, кто говорит, что код СРАЗУ надо писать так, чтобы подобных предупреждений не было - хоть в МТ4, хоть в МТ5
 
в новом билде будет корректно работать пользовательские индикаторы для старых билдов- или  нужно будет ждать обновления их авторами?
 
trora:
в новом билде будет корректно работать пользовательские индикаторы для старых билдов- или  нужно будет ждать обновления их авторами?
Старые ex4 (индикаторы, эксперты, скрипты, библиотеки) работают безо всяких ограничений. Мы полностью сохранили в новом терминале старую исполняющую машину
 
komposter:
https://www.mql5.com/ru/docs/basis/preprosessor/conditional_compilation

Спасибо, макросы  __MQL5__  и  __MQL4__ работают это, позволяет делать унифицированные программы.

Только вот компилятор <mql.exe> не хочет транслировать один и тот же файл под разные платформы, только отдельные *.mq4 и *.mq5, не смотря на указание параметра командной строки - /mql4 или /mql5.

Хотя по логике, явное указание параметров должно подавлять условную типизацию файлов по расширению.
 

Причина обращения: