confusão sobre o comportamento das variáveis - página 4

 
wlad:
em geral, eu gostaria que os desenvolvedores prestassem atenção a

O que os desenvolvedores têm a ver com isso? Você quer que eles armazenem sua variável no servidor deles? Enquanto seu computador fica pendurado e reinicia por causa de uma queda de energia?
 
wlad:

teste-o você mesmo.

e você vai ver do que se trata


eu sinto por você (((.
 

Do que você está falando?

Ainda não obtive nenhuma resposta real.

o fato é que existe um problema

 
Realmente uma articulação (na cabeça de alguém)
 
Vinin:
Realmente uma articulação (na cabeça de alguém)
Você me explica por que isto está acontecendo.
 
Já foi explicado a você, você só não quer ouvir a opinião de outras pessoas
 
Vinin:
Já foi explicado a você, você só não quer ouvir a opinião de outras pessoas.

por que

onde está que quando uma variável externa é alterada, a variável global assume seu valor

 

e só acontece com tangas.

Com outros tipos, ele funciona corretamente.

me diga onde estou errado.

 

Aqui está um exemplo para comparar o comportamento para cordas e fios

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);                              
}

e saída para o registro:

1. Carregando EA e iniciando variáveis globais

2. transferência de variáveis externas para variáveis globais. transferência única implementada via bool pela primeira vez

3. mudança de variáveis externas

4. A diferença pode ser vista aqui.

tempString toma o valor de ValueString - errado

tempInt mantém seu valor mesmo que ValueInt tenha mudado - correto

5 e 6 similares a 3 e 4


por favor explique porque a corda está se comportando de maneira diferente

enquanto a Int está correta

por favor, me dê respostas específicas.

 
wlad:

por favor explique porque o cordel se comporta de maneira diferente

Embora seja verdade.

Estou pedindo respostas específicas.

Não consigo ser muito específico, não consigo encontrar os links.

Eu vi em algum lugar no fórum que quando o compilador detecta variáveis de string com os mesmos valores, ele as coloca na mesma memória real, e as refere a qualquer pessoa que precise se referir a ela.

Portanto, você provavelmente está certo, eles devem ser escritos em uma variável. em teoria, pode ser um bug otimizador. escreva para servicedesk, envie seu exemplo com o código. eles irão corrigi-lo.

Também duplicado aqui: O MetaTrader 4 Build 529 versão beta com novo compilador foi lançado

--

// Mas em minha experiência nunca encontrei um problema que não pudesse ser resolvido.