confusione sul comportamento delle variabili - pagina 4

 
wlad:
in generale, vorrei che gli sviluppatori prestassero attenzione a

Cosa c'entrano gli sviluppatori? Vuoi che memorizzino la tua variabile sul loro server? Mentre il tuo computer si blocca e si riavvia a causa di un'interruzione di corrente?
 
wlad:

testatelo voi stessi.

e vedrete di cosa si tratta


Mi dispiace per te ((((.
 

Di cosa stai parlando?

Non ho ancora ricevuto delle vere risposte.

il fatto è che c'è un problema

 
Davvero una canna (nella testa di qualcuno)
 
Vinin:
Davvero una canna (nella testa di qualcuno)
Mi spieghi perché questo accade.
 
Ti è stato spiegato, solo che non vuoi sentire le opinioni degli altri
 
Vinin:
Ti è stato spiegato, solo che non vuoi sentire le opinioni degli altri.

perché

dove sta che quando una variabile esterna viene cambiata, la variabile globale assume il suo valore

 

e succede solo con i tanga.

Con altri tipi, funziona correttamente.

Dimmi dove sbaglio.

 

Ecco un esempio per confrontare il comportamento di stringhe e 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);                              
}

e l'output nel log:

1. caricare EA e inizializzare le variabili globali

2. trasferimento di variabili esterne alle variabili globali. trasferimento una tantum implementato tramite bool firsttime

3. cambiamento delle variabili esterne

4. la differenza può essere vista qui.

tempString prende il valore di ValueString - sbagliato

tempInt mantiene il suo valore anche se ValueInt è cambiato - corretto

5 e 6 simili a 3 e 4


per favore, spiega perché la stringa si comporta in modo diverso

mentre l'Int è corretto

Per favore, datemi risposte specifiche.

 
wlad:

per favore, spiega perché la stringa si comporta in modo diverso

Anche se è vero.

Sto chiedendo risposte specifiche.

Non posso essere molto specifico, non riesco a trovare i link.

Ho visto da qualche parte sul forum che quando il compilatore rileva variabili di stringa con gli stessi valori, le mette nella stessa memoria effettiva, e la riferisce a chiunque abbia bisogno di farvi riferimento.

Quindi probabilmente hai ragione, devono essere scritti in una variabile. in teoria, potrebbe essere un bug dell'ottimizzatore. scrivi a servicedesk, invia il tuo esempio con il codice. lo sistemeranno.

Anche duplicato qui: MetaTrader 4 Build 529 versione beta con nuovo compilatore è stato rilasciato

--

// Ma nella mia esperienza non ho mai incontrato un problema che non potesse essere risolto.