Новая версия платформы MetaTrader 5 build 2265: Функции DirectX для 3D-визуализации в MQL5 и настройка инструментов в тестере стратегий - страница 9
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тогда, если компилятор не знает разницы между int и uint, это моя ошибка. Интересно, потому что это работает в MT4 и более старых сборках MT5
Я думаю, что вы не поняли код. Последний параметр (нулевое значение) не влияет на вызов. Когда я использую только 2 параметра, оставляя последний параметр со значением по умолчанию, вызов точно такой же, как когда я использую 3 параметра. Но когда я использую 2 параметра, компилятор не читает, какой тип значения возвращает метод Api ° Array :: size (uint). Тогда это явная ошибка ...
Я думаю, что вы не поняли код. Последний параметр (нулевое значение) не влияет на вызов. Когда я использую только 2 параметра, оставляя последний параметр со значением по умолчанию, вызов точно такой же, как когда я использую 3 параметра. Но когда я использую 2 параметра, компилятор не читает, какой тип значения возвращает метод Api ° Array :: size (uint). Тогда это явная ошибка ...
Это не ошибка, а правильная защита.
За такие множественные перегрузки надо бить по рукам, а за дополнительные дефолтные параметры в этом случае - еще и по ногам.
Компиляторы давно уже бьются за защищенное поведение и глубокий анализ, а не формальную совместимость.This is not a mistake, but the right protection.
For such multiple overloads, one must beat on the hands, and for additional default parameters in this case - also on the legs.
Хорошо. очевидно, компилятор тупой. Он не может выбрать правильный перегруженный метод, даже зная, какие типы используются. Только можно вызвать 3 метода. Один с uchar, один с int и один с uint. Я выбираю uint в качестве второго параметра, но компилятор не знает, какой метод я хочу использовать. Вопрос в том, кто защищает кодеров от тупых компиляторов. Но это нормально. Я достаточно много лет работаю в metatrader, чтобы знать, что ты хочешь сказать мне своим ответом. Все равно спасибо
Хорошо. очевидно, компилятор тупой. Он не может выбрать правильный перегруженный метод, даже зная, какие типы используются. Только можно вызвать 3 метода. Один с uchar, один с int и один с uint. Я выбираю uint в качестве второго параметра, но компилятор не знает, какой метод я хочу использовать. Вопрос в том, кто защищает кодеров от тупых компиляторов. Но это нормально. Я достаточно много лет работаю в metatrader, чтобы знать, что ты хочешь сказать мне своим ответом. Все равно спасибо
У Вас на скриншотах видно, что сообщений о результатах компиляций много, нам показана малая часть.
Не показано, какого типа функция Api ° Array :: size
Компилятор явно не смог выбрать из двух "походящих" перегрузок (первую и вторую или третью), но вот в лог вывел сообщения обо всех трёх, чтобы программист был внимательнее и не пропустил ни одной из потенциально возможных.
You can see in the screenshots that there are a lot of messages about the compilation results, a small part is shown to us.
Not shown what type of function Api ° Array :: size
The compiler obviously could not choose from two “suitable” overloads (the first and second or third), but it sent messages about all three to the log so that the programmer was more attentive and did not miss any of the potential ones.
Это правда, я не показываю, какой тип возвращает, но не имеет значения, поскольку метод invoke с 2 или 3 параметрами абсолютно одинаков. Если вызов метода с 3 параметрами работает, он должен работать, когда я использую 2 параметра, потому что последний параметр всегда одинаков (ноль).
Звонок захвата "T &, UINT, UINT". Когда я использую 2 параметра вызова, я использую "T &, UINT". С 2 параметрами у меня есть только один метод (T &, uchar). Но у меня есть 2 метода с 3 параметрами. Поскольку последний параметр является значением по умолчанию, он работает как "T &, int" и "T &, uint", когда я использую 2 параметра. Почему раньше компилятор знал это, а теперь не видит? Мы говорим, что-то всегда работало. Теперь выглядит компилятор менее продвинутым. Я не понимаю эту регрессию в возможностях
Подскажите, а по стандартной библиотеке будут исправления?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 2265: Функции DirectX для 3D-визуализации в MQL5 и настройка инструментов в тестере стратегий
Vasiliy Pushkaryov, 2019.12.03 18:40
Хорошо бы стандартную библиотеку допилили. Билд 2248, кнопки при быстрых нажатиях так и продолжают залипать.
Хотя если не пользоваться СБ, то кнопки работаю очень быстро. Планируется ли дорабатка СБ ?
Вот без СБ
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 2265: Функции DirectX для 3D-визуализации в MQL5 и настройка инструментов в тестере стратегий
Renat Fatkhullin, 2019.12.03 19:47
Спасибо, проверим с утра.
Подскажите, а по стандартной библиотеке будут исправления?
Посмотрите на новые возможности 3D графики с примерами в релизе 2265:
И набор функций для работы с SQLite базами данных.
Будут в следующем релизе, не успели.