Ошибки, баги, вопросы - страница 1576
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
интересно по какому принципу попадают продукты в данный банер
и попадают ли туда продукты авторизованного продавцы? То есть могу ли я в этом баннере увидеть свой продукт ? пролистал 30 страниц своих так и не увидел ...
Я не мешаю. За плечами 26 лет безостановочного программирования.
Предупреждения - это по сути ошибки, если мы говорим о финансовом секторе. И все тысячи сообщений о "потере знака, потере точности, потере на приведениях и тд" являются приговором качеству кода. Видимо, вы не вполне понимаете последствия.
Предоставьте в достаточно полном виде тот кусок кода, на который компилятор указал как ошибку, пожалуйста.
Без этого все обсуждение выглядит неприглядно и не честно.
Ладно, Ренат, эти споры о "качестве кода" не относится к теме обсуждения. Ибо мы здесь говорим лишь о компилируемости, т.е. работоспособности кода. А потеря точности и т.д. - это уже личное дело программиста, так сказать под его ответственность. Ведь неявное приведение например int к short не запрещено стандартом языка, правильно? Так к чему эти нравоучения сейчас?
ОК, я таки отыскал один из этих багов:
на что получаю в логе:
'CClass' - declaration without type TestScript.mq5 16 9
'CClass' - comma expected TestScript.mq5 16 9
В прежних билдах всё нормально было.
Ладно, Ренат, эти споры о "качестве кода" не относится к теме обсуждения. Ибо мы здесь говорим лишь о компилируемости, т.е. работоспособности кода. А потеря точности и т.д. - это уже личное дело программиста, так сказать под его ответственность. Ведь неявное приведение например int к short не запрещено стандартом языка, правильно? Так к чему эти нравоучения сейчас?
ОК, я таки отыскал один из этих багов:
на что получаю в логе:
В прежних билдах всё нормально было.
Да, эту ошибку уже обсуждали (возможно, с A100) и исправили еще 4 мая. Перестарались с контролем типов, по всей видимости.
Я приложил последний MetaEditor билд 1329, в котором уже нет этой ошибки. Проверьте на нем, пожалуйста.
Релиз МТ5 выйдет 12 мая.
В прежних билдах всё нормально было.
В Вашем коде Вы возвращаете не const-указатель на private-объект. Получается, что сторонние (с точки зрения видимости переменных) функции могут менять казалось бы то, что не должно быть им доступно архитектурно, раз уж программист указал private.
Сам при желании возвратить указатель на private-объект, обязательно указываю const-модификатор. В Вашем случае повесил бы варнинг.
Не высокого полета птица, поэтому спрашиваю. Вы такой код где-то вынуждены использовать или это просто лень поставить const?
Два дня потратил практически целиком (в моем возрасте это уже много) при том, что планировал ими распорядиться несколько по иному
Поэтому, повторюсь, я снимаю шляпу перед A100 за его терпение. А сам я уже устал от этого, мне проще сидеть на старом билде, в котором всё нормально работает, чем выискивать причины багов в новом билде, работая на сервис-деск. Или мне кто-то заплатит за эту работу?
Да, сервисдеск - крутая вещь для бесплатной работы сторонних тестеров. Очевидно, что делалось это не для этого, но, по факту, стал именно работодателем для сторонних тестеров, работающих бесплатно. Если бы не эти сообщения о багах, компилятор допиливлся бы на порядок дольше.
Все поддержат, что за найденный баг должно быть вознакраждение, как это практикуют в мире. A100 должен получить зарплату тестера по штату. И, похоже, годовую зарплату тестера.
Да, эту ошибку уже обсуждали (возможно, с A100) и исправили еще 4 мая. Перестарались с контролем типов, по всей видимости.
Я приложил последний MetaEditor билд 1329, в котором уже нет этой ошибки. Проверьте на нем, пожалуйста.
Релиз МТ5 выйдет 12 мая.
Проверил. Ошибок компиляции теперь практически нет, за исключением некоторых странных чудес, которые мне не удаётся воиспроизвести отдельно от программы, однако удаётся обойти каким-то случайным образом.
Ниже привожу примерный код проблемного участка. Повторюсь, отдельно он компилируется нормально, а в составе моей программы выдаёт ошибку.
Если же в функции Main в любом месте (например после return) добавить строку:
work.Set(arr[0]);
то компилируется нормально.
Видно что-то перемудрили с оптимизацией.
А также возникают кое-какие глюки уже в рантайме. Например какому-то члену структуры присваиваю значение, но потом обнаруживается что значение там старое, т.е. ничего не присвоилось. Если же добавляю там рядом строчку с какой-то произвольной операцией, то всё становится нормально. Эти баги начались ещё с того осеннего билда, когда вы сделали оптимизацию компилятора. В общем, сыровато всё.
Кроме того, сама компиляция по прежнему занимает 20 секунд, в то время как на билде 1159 было лишь около 1-2 секунд. При этом существенного ускорения работы моих программ не наблюдаю, выигрыш в пределах 10-20%. Так что байки про ускорение в 2-10 раз можно забыть. Может на специально подобранных тестовых образцах такое и случается, но у нас то реальные программы, а не муляжи.
Итого, 10-20-кратное замедление компиляции ради небольшого увеличения производительности. Имхо, не стоит того. Потерянное время программиста гораздо ценнее.
Вынужден по-прежнему оставаться на 1159 билде.
В Вашем коде Вы возвращаете не const-указатель на private-объект. Получается, что сторонние (с точки зрения видимости переменных) функции могут менять казалось бы то, что не должно быть им доступно архитектурно, раз уж программист указал private.
Сам при желании возвратить указатель на private-объект, обязательно указываю const-модификатор. В Вашем случае повесил бы варнинг.
Не высокого полета птица, поэтому спрашиваю. Вы такой код где-то вынуждены использовать или это просто лень поставить const?
В private я скрываю лишь массив. А сами объекты CClass доступны пользователю для полного доступа, в этом и цель. Если бы нужно было только для чтения, то я бы поставил const.
Все поддержат, что за найденный баг должно быть вознакраждение, как это практикуют в мире. A100 должен получить зарплату тестера по штату. И, похоже, годовую зарплату тестера.
не знаю баг это или просто не правильное описание методов класса CDealInfo PositionId() и Ticket(). Написал такой код
результат
добавил запрос истории сделок с помощью функции HistorySelect(), методы класса заработали.
результат
В private я скрываю лишь массив. А сами объекты CClass доступны пользователю для полного доступа, в этом и цель. Если бы нужно было только для чтения, то я бы поставил const.
Ясно. Подскажите, в каких конструкциях это может пригодиться? Понимаю, что при таком подходе нельзя ничего сделать с самим массивом (изменить размер, поменять местами элементы и т.д.). delete, правда, можно применить...
Предполагаю, что Вы это делаете где-то с шаблоном, чтобы для разных типов объектов был одинаковый синтаксис оператора []. В общем, могли бы Вы показать использование данной конструкции, когда это удобно.