Ошибки, баги, вопросы - страница 2751

 
Alexey Navoykov:

Вот как-раз не нужно этого ***.  _Symbol - это константа, поэтому с ним проблем нет (хотя правильней всё ж вызывать Symbol()).  А тик - это переменная.  Как это вы себе представляете, что она у вас объявлена const, но значение её меняется.

Вы путаете константность со стороны MQL и со стороны ядра. Суть объявления структуры с модификатором const в том, что MQL-код не может её изменять. По аналогии, можно описать метод класса const, что предотвращает изменение объекта в этом методе, но не означает, что сам объект не может изменить свое состояние по другим условиям.

 

Почему в тестере в визуальном режиме нельзя посмотреть глобальные переменные терминала (эмулируемые разумеется)?

В тестере глобальные переменные терминала вообще работают?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Andrey Dik:

Почему в тестере в визуальном режиме нельзя посмотреть глобальные переменные терминала (эмулируемые разумеется)?

В тестере глобальные переменные терминала вообще работают?

Всегда было можно (F3). Работают.

 
Alexey Navoykov:

Там у вас в первом случае меняется статическая переменная, а не член класса.  Поэтому константность вообще ни при чём.

выполнение этого скрипта должно вернуть значение sum = 0 ?

или этот скрипт вообще должен выдать ошибку компиляции?

void OnStart()
{
   int sum = 0;
   for(int i = 0; i < 3 ; i++)
   {
      const int j = f(i);
      sum += j * i;
   }
   printf("sum = %i", sum);
}
//+------------------------------------------------------------------+
int f(int v)
{
   return(v);
}
//+------------------------------------------------------------------+
 
Igor Makanu:

выполнение этого скрипта должно вернуть значение sum = 0 ?

или этот скрипт вообще должен выдать ошибку компиляции?

Вы хоть дебагер запустите, прежде чем писать нелепые утверждения.
На втором цикле i == 1 и j == 1, а на третьем и так далее оба на единицу больше.

 
Sergey Dzyublik:

Вы хоть дебагер запустите, прежде чем писать нелепые утверждения.
На втором цикле i == 1 и j == 1, а на третьем и так далее оба на единицу больше.

вы хоть школу закончите, прежде чем незнакомых людей в чем то обвинять

в нормах русского языка знак вопроса в конце предложения, ну никак не означает утверждение!

 
Igor Makanu:

вы хоть школу закончите, прежде чем незнакомых людей в чем то обвинять
в нормах русского языка знак вопроса в конце предложения, ну никак не означает утверждение!

Извините, что ранил ваши чувства достоинства... 
Надеюсь, что вам все-таки удасться разобраться как же работает коварный модификатор const в MQL.

Ошибки, баги, вопросы

Igor Makanu, 2020.03.21 10:26

в прошлом году работало не так - специально тестировал модификаторы const
и кажется @Ilyas объяснял как происходит запуск MQL-программы, сначала инициализируются все const и static вне зависимости от того где они описаны, затем уже конструкторы классов будут вызваны
ладно, с этой инициализацией static / const - ее можно еще правильно распределить, но вот то, что модификатор const не гарантирует, что компилятор это проверит - очень неожиданно - мой второй пример


 
Sergey Dzyublik:

Извините, что ранил ваши чувства достоинства... 
Надеюсь, что вам все-таки удасться разобраться как же работает коварный модификатор const в MQL.

извиняю, читайте контекст, включая разделители

у нас с вами разные задачи нахождения на форуме, вы форумный всезнайка, который поднимает уровень своего скила отвечая на вопросы форумнчан, я же напротив не боюсь задать вопрос на форуме и не боюсь показать свою неосведомленность в этом.... зачем задавать вопрос если знаешь ответ?

хотя, возможно, вы представитель охранных структур, в очередной раз пытаетесь найти мои сообщения в истории форума, чтобы прикрепить их в текущее обсуждение... читайте первую строку этого сообщения!

 

У меня, при отладке и при самой работе индикатора, в журнале, внезапно пишет Stack overflow. При самой отладке вылетает сообщение "Возникла критическая ошибка, отладка остановлена". Вот моя аналогичная тема: https://www.mql5.com/ru/forum/338301. Но при компиляции компилятор не ругается и всё проходит нормально. При отладке невозможно установить в какой момент программа вылетает.

Возможно, всё дело в компиляторе? Какой компилятор используется я особо не вникал, но в настройках у меня следующая картина: 

Компиляторы

У меня установлен VS, поэтому, в настройках эта ссылка. Значит и компилятор соответствующий?... Но какой компилятор был, когда VS у меня не было, я честно говоря, не вникал. Может быть, следует попробовать вернуться к тому компилятору и попробовать скомпилировать проект с помощью него?

Ошибка при дебаге (Возникла критическая ошибка, отладка остановлена)
Ошибка при дебаге (Возникла критическая ошибка, отладка остановлена)
  • 2020.04.23
  • www.mql5.com
Решил поэкспериментировать со стандартным UI компонентом CAppDialog...
 
fxsaber:

Совсем недавно обнаружил символ, на котором Digits было неверно задано. Попросил брокера исправить. Он это сделал сходу. Не смотрел, менялось ли значение переменой _Digits и Digits(). Но просто факт, что символ может поменять свои значения на ходу.

Значение _Digits не должно было поменяться хотя бы потому, что оно помещается в read-only блок памяти