вам не кажется ли, что вопрос не имеет смысла?
ибо старые программы не запустятся на новом билде, а новые на старом.
что вы определять собрались?
вам не кажется ли, что вопрос не имеет смысла?
ибо старые программы не запустятся на новом билде, а новые на старом.
что вы определять собрались?
мне говорили что программы скомпилированные для 509 должны будут работать и под 555
при чем здесь обратка.
в 509 ведь нет никаких директив что появились в новых билдах.
вопрос не имеет смысла. написано не подумав.
при чем здесь обратка.
в 509 ведь нет никаких директив что появились в новых билдах.
вопрос не имеет смысла. написано не подумав.
я так понял ему нужно знать на каком компиляторе сделан ex4 файл на новом или на старом. ведь ex4 для 509 будет работать на 555
ЗЫ: а хотя чё я сюда лезу )
при чем здесь обратка.
в 509 ведь нет никаких директив что появились в новых билдах.
вопрос не имеет смысла. написано не подумав.
Отсутствие директив - это тоже признак, но как его проверить из MQL?
А может проверить как то по другому, потому и спросил про идеи, если у вас их нет, то какой смысл постить...
я так понял ему нужно знать на каком компиляторе сделан ex4 файл на новом или на старом. ведь ex4 для 509 будет работать на 555
ЗЫ: а хотя чё я сюда лезу )
мне говорили что программы скомпилированные для 509 должны будут работать и под 555
Да, старые программы для 500/509 билдов работают и в новой версии.
Поддержка старых исполнимых EX4 файлов является для нас приоритетом и мы специально держим две виртуальные машины исполнения для старого и нового вариантов.
Отсутствие директив - это тоже признак, но как его проверить из MQL?
А может проверить как то по другому, потому и спросил про идеи, если у вас их нет, то какой смысл постить...
Идея есть, весьма простая : если вообще не компилируется - значит билд слишком старый. Вряд ли удастся соорудить более умную "автопроверку", поскольку старый компилятор не сможет адекватно отреагировать.
Самое простое - вставить вначале программы что-нибудь этакое :
#ifdef __MQL4__ // (1) /// Внимание! Если компилятор не хочет это компилировать - закомментируйте все строки помеченные (1) и раскомментируйте (2) #property strict // (1) #endif // (1) #include "new_build.mqh" (1) // #include "old_build.mqh" (2)
Идея есть, весьма простая : если вообще не компилируется - значит билд слишком старый. Вряд ли удастся соорудить более умную "автопроверку", поскольку старый компилятор не сможет адекватно отреагировать.
Самое простое - вставить вначале программы что-нибудь этакое :
Спасибо за идею, но к сожалениию это может сработать только один раз - при попытке компиляции в старом компиляторе нового кода, а после правки комментов(1)(2) это уже должно будет компилиться в обоих компиляторах, без никаких ошибок.
А вам сколько раз нужно?
// Постарайтесь не придумывать лишних проблем. Их и без того хватает.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В изменениях к 880 билду добавлен макрос __MQL4BUILD__ и __MQL5BUILD__ которые позволят из MQL делать проверку, вводить варианты кода и обеспечивать независимость программ от разных версий компиляторов.
Как отмечалось MetaQuotes - в новом MT4 будет одновременная поддержка программ, которые скомпилированы как в новой версии, так и в старой, не совмещенной с MQL5.
В связи с этим у меня вопрос - как из MQL4 программы определить, где она компилируется в старой версии MT4 компилятора или в новой, совмещенной с MQL5?
Подозреваю, что штатной возможности нет, но может у кого то есть идеи - вопрос не праздный, т.к. ознакомившись с бета я понял, что в новой версии будут довольно значительные изменения - работа с массивами, строками, котировками, которые потребуют серьезных переделок кода при этом ИМХО, где то эффективность будет повышаться, а где то и наоборот падать.