Ошибки, баги, вопросы - страница 2115
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Неоднократно встречал на форуме обсуждение пользователей об отсутствие в MetaEditor предопределенного макроса, аналогичного _WIN64. Ответ администрации был, что нет необходимости, поскольку MetaEditor генерирует универсальный одновременно 32-64-х разрядный код.
В то же время многие используют выравнивание https://www.mql5.com/ru/forum/225498/page2#comment_6401835 путем дополнения полей структуры
И действительно, если использовать готовую .dll (которую уже нельзя изменить) то без дополнительного выравнивания не обойтись. Но в x86 и x64 это дополнение может выглядеть по разному, а значит необходимость в аналоге _WIN64 все-таки есть, поскольку структура задается на этапе компиляции .mq5 файла где TerminalInfoInteger( TERMINAL_X64 ) не работает
Сейчас нужно лишнюю информацию держать в уме. В результате экономии на пустяке есть риск получить трудноуловимую ошибку
Вот пример от разработчиков - GetOpenFileName, которая работает в x64 и x86. Посмотрите, решает ли он вопрос
Вот пример от разработчиков - GetOpenFileName, которая работает в x64 и x86. Посмотрите, решает ли он вопрос
Фактически кода требует почти в два раза больше,
при том что программы с .dll не для массового сегмента
Опять же должен быть выбор: раздельная (32\64) компиляция и в 2 раза проще код
или универсальность и существенное усложение кода
И кроме того аналог _WIN64 можно ввести по принципу _IsX64 (не документирован но пользоваться можно)
Дополнительный аргумент - часто к проекту приложена только одна .dll (либо только x86, либо только x64) и нельзя в .mqh файле этого проекта задать строку вида
Например здесь https://www.mql5.com/ru/forum/224745Пример из справки
Отсюда вопрос, как изменить заливку в OBJ_RECTANGLE в мт 4 ???
Renat Fatkhullin:
Мы нацелены вообще скоро остановить разработки 32 битных версий Метатрейдера.
Желательно к этому моменту исправить все известные ошибки возникающие при выполнении, например эту #1841289 https://www.mql5.com/ru/forum/1111/page2025#comment_5766707
Поведение этого и других operator не соответствует методам. При том что operator по отношению к методам является не более чем синтаксическим сахаром
Аргументы функции вычисляются не справа налево
Результат строки (*) : 0:5041
Ожидалось в обоих случаях: 0:0
Аргументы функции вычисляются не справа налево
Результат строки (*) : 0:5041
Ожидалось в обоих случаях: 0:0
Это не ошибка. Компилятор сам решает в каком порядке вычислять аргументы.
Надо просто это учитывать.
Это не ошибка. Компилятор сам решает в каком порядке вычислять аргументы.
Ошибка заключается в следующем: еще недавно порядок строго определялся https://www.mql5.com/ru/forum/1111/page2040#comment_5858419 (обратите внимание на дату и выдержку из документации: гарантируется). Потом порядок потихому поменяли (в том числе в документации), причем поменять его можно было цивилизованно - через inline https://www.mql5.com/ru/forum/1111/page2042#comment_5860752. А как пользователь должен узнать об этом? Догадаться? Или перед использованием любого инструмента смотреть документацию?
Ошибки при компиляции и не только