Ошибки, баги, вопросы - страница 2044
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Баг с инициализацией статических переменных. В старых билдах его не было.
Кому не трудно, отравьте это в сервис-деск. У меня больше нет желания общаться с ними там.
Это не баг, отсюда обсуждалось. Выжимка
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql4, тонкости и приёмы работы
Alexey Viktorov, 2017.04.30 08:54
последовательность инициализации: (для тех кто не знает об этом)
Сначала переменные глобального уровня потом статические расположенные в зависимости от первоочерёдности функций, OnInit(), OnTick() или OnCalculate()... дальше мне было не интересно, а локальные в своё время. Так вот в этом коде получается, что функция вызывается до окончания инициализации статических переменных, отсюда и ошибка о которой идёт речь. Функция вызвана раньше чем инициализирована переменная
Это не баг, отсюда обсуждалось. Выжимка
Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? ) Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка. Остаётесь только вы ) Обсудили сами с собой, значит это не баг )
Это баг. Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё. Это нонсенс. И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте. Третьего не дано. Иначе это не язык программирования, а чёрти что.
Ещё один баг в новых билдах:
Эх, как же тут всё сыро. Думал, обновлюсь таки на новые билды, а то на старых уже Маркет не принимает продукты. А тут баг на баге!
Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? ) Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка. Остаётесь только вы ) Обсудили сами с собой, значит это не баг )
Это баг. Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё. Это нонсенс. И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте. Третьего не дано. Иначе это не язык программирования, а чёрти что.
Вычеркнуть можешь, я никогда пальцы не растопыривал "какой я программист"...
А документацию прочесть мама не велит??? Специально для таких я вставил цитату из документации
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql4, тонкости и приёмы работы
Alexey Viktorov, 2017.04.29 12:50
А ничего что в справке написано что статическая переменная ... читайте сами
Но никак не функцией.
Вот так работает
Ещё один баг в новых билдах:
Эх, как же тут всё сыро. Думал, обновлюсь таки на новые билды, а то на старых уже Маркет не принимает продукты. А тут баг на баге!
А у меня правильно показывает!
Вычеркнуть можешь, я никогда пальцы не растопыривал "какой я программист"...
А документацию прочесть мама не велит??? Специально для таких я вставил цитату из документации
А у меня правильно показывает!
Хм, а какой у вас билд? У меня 1653
Значит если это обсуждалось между Вами и Alexey Viktorov, то даёт вам основания полагать, что это не баг? ) Причём этот человек сам заявляет, что его уровень знания программирования значительно ниже вашего. Т.е. его можно вычеркнуть из списка. Остаётесь только вы ) Обсудили сами с собой, значит это не баг )
Это баг. Такого не может быть в принципе, чтобы инициализация переменной была проигнорирована, и код продолжил выполняться, перескочив через неё. Это нонсенс. И порядок инициализации тут не имеет значения. Переменная либо инициализируется, либо компилятор выдаёт ошибку в этом месте. Третьего не дано. Иначе это не язык программирования, а чёрти что.
Если нахожу логическое (непротиворечивое) объяснение результату, то не вижу бага. Не считаю, что доказательство бага приемлемо, если результат не совпадает с C++. Это в C++ кто-то так подумал и сделал. А мог и не подумать так и, соответственно, не сделать. Поэтому лучше не ссылаться на что-то там, а основываться на какой-то своей внутренней концепции, как должно быть. И желательно, чтобы "свое" было, действительно, своим. А не результатом незаметного навязывания стереотипов "как надо" по мере набирания опыта программирования.
Мне не западло ошибаться. Учусь потихоньку на своих граблях.
Хм, а какой у вас билд? У меня 1653
1653x64.
1653x64.
Странно, откуда тогда расхождение...
Пусть кто-то ещё проверит у себя.