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

 
wlad:
в общем хотелось бы чтобы разработчики обратили внимание

Да причём тут разработчики? Вы хотите чтобы они Вашу переменную у себя на сервере хранили? Пока у Вас комп виснет и перезагружается из-за перебоев с электричеством?
 
wlad:

протестите сами

да увидите о чём речь идёт


я вам сочувствую (((
 

вы о чём тут?

стоящих ответов пока не получил

факт на лицо - косяк существует

 
Действительно косяк (в чей-то голове)
 
Vinin:
Действительно косяк (в чей-то голове)
вы мне объясните почему так происходит
 
Вам уже все объяснили, просто Вы чужие мнения слышать не хотите
 
Vinin:
Вам уже все объяснили, просто Вы чужие мнения слышать не хотите

почему же

где стоит что при изменении внешней переменной глобальная принимает её значение

 

и происходит только со стрингами

с другими типами правильно работает

поясните в чём я не прав

 

приведу пример для сравнения поведения для стрингов и интов

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

bool   firsttime=true;
       
int start() {
   string txt=StringConcatenate( "  ValueString: ",ValueString," < >","  tempString: ",tempString,"\n",
                                 "  ValueInt: ",   ValueInt,   " < >","  tempInt: ",tempInt,"\n",
                                 "  firsttime: ",firsttime);    
   if(firsttime) {     // значение присваевается тольо ОДИН раз   
      tempString=ValueString; 
      tempInt=ValueInt; 
      firsttime=false; 
   }

   Print(txt);
   Comment(txt);                              
}

и вывод в лог:

1. загрузка эксперта и иницилизация глобальных переменных

2. передача экстерных переменных глобальным переменным. однократная передача реализованная через bool firsttime

3. изменение внешних переменных

4. здесь видно разницу

tempString принимает значение ValueString - неправильно

tempInt сохраняет своё значение хотя ValueInt изменилась - правильно

5 и 6 аналогично 3 и 4


прошу объяснить почему стринг ведёт сябе по другому

в то время как инт правельно

прошу конретных ответов посути

 
wlad:

прошу объяснить почему стринг ведёт сябе по другому

в то время как инт правельно

прошу конретных ответов посути

совсем конкретно не могу. искать ссылки ломает. как сумею.

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

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

заодно продублируй сюда: Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором

--

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

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