непонятки с поведением переменных - страница 7

 

переделал эксперт для тэста в выходные без start()

1. ставим на график

2. меняем параметры

3. в логе видно что стринг (голубой цвет) в отличии от инт (зелённый цвет) принимает ошибочно значения от внешней переменной

extern string ValueString = "DDD";
extern int    ValueInt    = 10;  
     
string tempString="val";
int    tempInt   =0;

bool   firsttime=true;
       
int init() {  
   if(firsttime) {     // значение присваевается тольо ОДИН раз   
      Print("иницилизация глобальных переменных");
      Print("tempString = ",tempString);
      Print("tempInt    = ",tempInt);
      
      Print("однократное присваение внешних значений глобальным переменным");
      tempString=ValueString; 
      tempInt   =ValueInt; 
      firsttime =false; 
      Print("ValueString: ",ValueString," < >","  tempString: ",  tempString);
      Print("ValueInt:     ",ValueInt,  " < >","  tempInt:      ",tempInt);
   } else {
      Print("меняем входные параметры");
      Print("ValueString: ",ValueString," < >","  tempString: ",  tempString);
      Print("ValueInt:     ",ValueInt,  " < >","  tempInt:      ",tempInt);
   }                          
}

int start() {}





Файлы:
testinit.mq4  1 kb
 
wlad:

переделал эксперт для тэста в выходные без start()

1. ставим на график

2. меняем параметры

3. в логе видно что стринг (голубой цвет) в отличии от инт (зелённый цвет) принимает ошибочно значения от внешней переменной





А ведь действительно косяк....Переменные заданные на внешнем уровне не иницилизируется при перезапуске советника, а берут какую-то хрень с прошлых перезапусков..Wladу отдельное спасибо за долготерпение)))))
 

И тут тоже в тему... простенкий индикатор в котором есть

#property indicator_color1 Red
и

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3,Aqua);

Цвет остается Red со своей толщиной... До тех пор пока принудительно не удалишь индикатор и заново его не запустишь, Т.е. простая перекомпиляция не помогает. Получается параметры вытаскиваются из каких-то сусеков.... Фигня конечно, но wlad до этого докопался))))

 
Очевидно это связано, уже давно замечал, иногда код советника меняешь, компилируешь, а работает предыдущий код, пока терминал не перезагрузишь. Даже перезапуск советника не помогает. Но это происходит далеко не всегда, поэтому я к косяку относился спокойно. Ну есть, да есть... Вроде не сильно мешает.
 

да,

было бы неплохо есле бы все таки разработчики поправили

или здесь бессмыссленно писать и сразу в хелп деск обратится?

куда кстати обратится можно?

 
Sepulca:
Э... поздравьте мну, я вроде дедом стал, не совсем, ну признались дети......)))

Поздравляю! А сколько деду?
 

подскажите плиз

как можно с суппортом связатсья

нигде не нашёл

 
wlad:

подскажите плиз

как можно с суппортом связатсья

нигде не нашёл

С четвёртого форума напрямую никак. Можно с пятого. См. в своём профиле на mql5.com ссылку "Сервисдеск" (слева, в столбце со списком сервисов профиля).
 
MetaDriver:
С четвёртого форума напрямую никак. Можно с пятого. См. в своём профиле на mql5.com ссылку "Сервисдеск" (слева, в столбце со списком сервисов профиля).
спасибо, гляну
 
wlad:

переделал эксперт для тэста в выходные без start()

1. ставим на график

2. меняем параметры

3. в логе видно что стринг (голубой цвет) в отличии от инт (зелённый цвет) принимает ошибочно значения от внешней переменной



В новом компиляторе не воспроизводится. Старый никто уже править не будет.

extern string ValueString = "DDD";
extern int    ValueInt    = 10;  
     
string tempString="val";
int    tempInt   =0;

bool   firsttime=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(firsttime) 
     {     // значение присваевается тольо ОДИН раз   
      Print("иницилизация глобальных переменных");
      Print("tempString = ",tempString);
      Print("tempInt    = ",tempInt);

      Print("однократное присваение внешних значений глобальным переменным");
      tempString=ValueString;
      tempInt   =ValueInt;
      firsttime =false;
      Print("ValueString: ",ValueString," < >","  tempString: ",tempString);
      Print("ValueInt:     ",ValueInt," < >","  tempInt:      ",tempInt);
        } else {
      Print("меняем входные параметры");
      Print("ValueString: ",ValueString," < >","  tempString: ",tempString);
      Print("ValueInt:     ",ValueInt," < >","  tempInt:      ",tempInt);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
Причина обращения: