confusión sobre el comportamiento de las variables - página 4

 
wlad:
en general, me gustaría que los desarrolladores prestaran atención a

¿Qué tienen que ver los desarrolladores? ¿Quieres que almacenen tu variable en su servidor? ¿Mientras tu ordenador se cuelga y se reinicia por un corte de luz?
 
wlad:

pruébalo tú mismo.

y verás de qué se trata


Lo siento por ti (((.
 

¿De qué estás hablando?

Todavía no he obtenido ninguna respuesta real.

el hecho es que hay un problema

 
Realmente un porro (en la cabeza de alguien)
 
Vinin:
Realmente un porro (en la cabeza de alguien)
Explícame por qué ocurre esto.
 
Se te ha explicado, sólo que no quieres escuchar la opinión de los demás
 
Vinin:
Ya te lo han explicado, sólo que no quieres escuchar la opinión de los demás.

por qué

donde se establece que cuando se modifica una variable externa, la variable global toma su valor

 

y sólo ocurre con los tangas.

Con otros tipos, funciona correctamente.

dime en qué me equivoco.

 

Este es un ejemplo para comparar el comportamiento de las cadenas y los ints

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

y la salida al registro:

1. carga de EA e inicio de variables globales

2. transferencia de variables externas a variables globales. transferencia única implementada mediante bool firsttime

3. cambio de variables externas

4. la diferencia se puede ver aquí.

tempString toma el valor de ValueString - erróneo

tempInt mantiene su valor aunque ValueInt haya cambiado - correcto

5 y 6 similares a 3 y 4


por favor, explique por qué la cadena se comporta de manera diferente

mientras que el Int es correcto

por favor, dame respuestas concretas.

 
wlad:

por favor, explique por qué la cadena se comporta de manera diferente

Si bien es cierto.

Pido respuestas concretas.

No puedo ser muy específico, no encuentro los enlaces.

He visto en algún lugar del foro que cuando el compilador detecta variables de cadena con los mismos valores, las pone en la misma memoria real, y la referencia a cualquiera que necesite referirse a ella.

Así que probablemente tengas razón, deben estar escritos en una sola variable. en teoría, puede ser un error del optimizador. escribe a servicedesk, envía tu ejemplo con el código. ellos lo arreglarán.

También se duplica aquí: MetaTrader 4 Build 529 versión beta con nuevo compilador ha sido liberado

--

// Pero en mi experiencia nunca me he encontrado con un problema que no pudiera resolverse.