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

 
Правильно ли я понял, что добавляя #property strict в программы *.мq4 это будет явно указывать использовать новый компилятор?
 
paladin800:
Правильно ли я понял, что добавляя #property strict в программы *.мq4 это будет явно указывать использовать новый компилятор?

Компилятор будет использоваться в любом случае новый. А данное свойство

#property strict

просто говорит компилятору использовать строгий режим компиляции. Это описано в анонсе:

Таблица отличий между компиляторами

Старый компилятор MQL4
Новый компилятор MQL4
Новый MQL4 с #property strict
Точки входа init(), start(), deinit() могут иметь любые параметры и любой тип возврата init(), start(), deinit(), оставленные для совместимости,
и новые OnInit(), OnStart(), OnCalculated, OnTick(), OnTimer(), OnChartEvent(), OnTester(), OnDeinit() должны точно соответствовать своим сигнатурам
Имена переменных практически любые (кроме зарезервированных слов), включая спецсимволы и точки
Имена переменных не могут иметь спецсимволы и точки.
Список зарезервированных слов расширен, поэтому именами не могут быть такие широко распространенные слова, как short, long, const и т.д.
Область видимости переменной - от объявления (даже во вложенном блоке) до конца функции
Область видимости переменной - от объявления до конца блока, в котором переменная объявлена
Неявная инициализация всех переменных (и глобальных, и локальных) нулями
Инициализация только глобальных переменных. Из локальных переменных неявно инициализируются только строки.
Локальные массивы при выходе из функции не освобождаются
Локальные массивы освобождаются при выходе из функции
Локальные массивы освобождаются при выходе из блока {}
Ошибка "Array out of range" (индекс за пределами массива) не приводит к критической ошибке *
То же. Кроме массивов структур и классов, для которых эта ошибка является критической
"Array out of range" - критическая ошибка и приводит к остановке программы
Структур и классов нет
Структуры и классы есть. Появились дополнительные типы данных
Строки - однобайтовые.
datetime - 32-битное целое.
Предопределенная переменная Volume имеет тип double
Строки - юникодные.
datetime - 64-битное целое.
Предопределенная переменная Volume имеет тип ulong
ArrayCopyRates() производит виртуальное копирование в массив double[][6] ArrayCopyRates() производит виртуальное копирование в массив MqlRates[]. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное
Функции могут не возвращать значения, даже если они имеют тип. Для этого в конце функции компилятором автоматически проставляется return(0)
Функции любого типа всегда должны возвращать значение
Количество одновременно открытых файлов - 32
Количество одновременно открытых файлов - 64
Файлы всегда открываются в режиме совместного использования **
Режим совместного использования нужно указывать явно с помощью FILE_SHARE_READ и/или FILE_SHARE_WRITE

* Следует обратить особое внимание на ошибку "Array out of range" - многие старые пользовательские индикаторы при запуске на графике будут выдавать эту ошибку в новом компиляторе в режиме strict. Желательно найти причину и устранить ее.

** В новом MQL4 и MQL5 за режим совместного использования файлов отвечают флаги FILE_SHARE_READ и FILE_SHARE_WRITE, которых не было в старом MQL4.

Выпущена бета-версия MetaTrader 4 Build 574 с обновленным языком MQL4 и Маркетом приложений - MQL4 форум
  • www.mql5.com
Выпущена бета-версия MetaTrader 4 Build 574 с обновленным языком MQL4 и Маркетом приложений - MQL4 форум
 

По-моему, все очень даже логично и правильно.

В принципе, мне кажется, что "строгий" режим должен быть основным режимом. Но, с другой стороны, для совместимости верным решением будет, действительно, не делать его режимом по умолчанию.

 
ну. исправьте. почему должны страдать люди из-за ваших обновлений??? я же не программист. и деньги были потрачены на индикаторы. если что вышлите исправленные индюки мне на почту: rezalilov@yandex.ru или тут вложите. или найдите программиста, чтоб бесплатно исправил.
 
rent:
ну. исправьте. почему должны страдать люди из-за ваших обновлений??? я же не программист. и деньги были потрачены на индикаторы. если что вышлите исправленные индюки мне на почту: rezalilov@yandex.ru или тут вложите. или найдите программиста, чтоб бесплатно исправил.

Каков наглец. Взял чужие декомпилированные программы, опубликовал их, ни в чем не разбирается, предъявляет претензии и требует(!!!), чтобы ему эти самые ворованные программы переписали.

Просто потрясающе. Хуцпа в действии.

 
почему ворованные? что уже с инета нельзя скачивать? а эти мне ваще продали.
 
что по-вашему каждый торгующий на форекс должен разбираться в MQL?
 
rent:
ну. исправьте. почему должны страдать люди из-за ваших обновлений??? я же не программист. и деньги были потрачены на индикаторы. если что вышлите исправленные индюки мне на почту: rezalilov@yandex.ru или тут вложите. или найдите программиста, чтоб бесплатно исправил.
Ну, если вы купили индикаторы - то, по идее, должны обсуждать ситуацию с продавцом. Что говорит лицензионное соглашение ?
 
rent:
почему ворованные? что уже с инета нельзя скачивать? а эти мне ваще продали.

идеально обратиться к программисту - писавшему код - (  продавцу )

--

по моим наработкам - поддерживаю всех

обращаются и те кто купил еще в середины 2000   ( в основном с просьбой что то разработать доработать )

 
revers45:

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

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

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

Это задумывалось для библиотек. Пишите унифицированный код в *.mqh, и включайте его в необходимый *.mq4 || *.mq5
Причина обращения: