Разработчикам: очень странный глюк

 
День добрый, уважаемые. Можете не вникать в смысл ниже приведенного скрипта, ответьте только на простой вопрос: почему инициализация переменной С проходит чем угодно, только не нулем? Причем, глюк проявляется только если Number - большое число. И чем оно больше, тем больше отклонение переменной от нуля. Если что-то, даже не существенное, изменить в скрипте (убрать, например, функции Print в цикле for), как правило, глюк пропадает. Проблема в том, что этот скрипт нужен мне именно в таком виде. Ничего менять нельзя.
Файлы:
check.mq4  2 kb
 
benik >>:
День добрый, уважаемые. Можете не вникать в смысл ниже приведенного скрипта, ответьте только на простой вопрос: почему инициализация переменной С проходит чем угодно, только не нулем? Причем, глюк проявляется только если Number - большое число. И чем оно больше, тем больше отклонение переменной от нуля. Если что-то, даже не существенное, изменить в скрипте (убрать, например, функции Print в цикле for), как правило, глюк пропадает. Проблема в том, что этот скрипт нужен мне именно в таком виде. Ничего менять нельзя.

Вообще-то все нормально.


Попробуй вставить вот такую строчку в код:


      Print ("Число C = ", C);  // Почему инициализация проходит не нулем???

      if (C == 0) Alert("Число C = ", C);
      
      MathSrand (GetTickCount());

И если открыть файл лога, то там инициализация равна нулю. В терминал выводится отличное от нуля значение. Этот момент описывался где-то и не раз.

 
В скрипте явная инициализация переменной C нулевым значением, и все работает как и должно. О чем идет речь?
 
Сейчас снова проверил - у меня инициализируется не нулем. Первая запись функции Print - С = -1 Я проверяю в 221 билде.
 
benik >>:
Сейчас снова проверил - у меня инициализируется не нулем. Первая запись функции Print - С = -1 Я проверяю в 221 билде.

Обновляться тогда тебе нужно. Какой смысл разработчикам тебе что-то объяснять по старым билдам, если есть уже новый. Не трать не своё, ни чужое время.

 
Странно, если вставить if (C == 0) Alert("Число C = ", C); как подсказал HIDDEN, выскакивает Alert С = 0. Почему же тогда первая запись функции Print: 2009.07.06 10:47:29 Check _DJI,H4: Число C = 8
 

Установил 224 билд. Та же самая песня. Print пишет что угодно, но не С = 0. Почему такое происходит?

 
Ладно, вопрос снимаю. Сейчас проверил, действительно в логах пишется все как полагается.
 
benik >>:

Установил 224 билд. Та же самая песня. Print пишет что угодно, но не С = 0. Почему такое происходит?

Видимо, Вам нужно немного изменить скрипт, чтобы все прояснилось:

      int Number = 1000;
      int C =0;
      int val; 
      int prev = 0;
      Comment ("Число C = ", C);  // Выведем и на график сообщение, чтобы быть уверенным ,что смотрим туда, куда надо
      Print ("Число C = ", C);  // Почему инициализация проходит не нулем???
 

Всем спасибо за ответы. Я просто понял, что Print иногда пишет не то что на самом деле. Нужно смотреть в логах.

 
benik писал(а) >>

Всем спасибо за ответы. Я просто понял, что Print иногда пишет не то что на самом деле. Нужно смотреть в логах.

Print всё правильно пишет, но не всё выводится во владку "Журнал" тестера. А Вы бы дожидались, пока весь файл лога, составляющий иногда сотни килобайт, будет напечатан в Журнале ?

Причина обращения: