confusion sur le comportement des variables - page 7

 

refait le Conseiller Expert pour le test du week-end sans start()

1. aller au tableau

2. modifier les paramètres

3. le journal montre que la chaîne (bleu) reçoit des valeurs erronées d'une variable externe, contrairement à int (vert)

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() {}





Dossiers :
testinit.mq4  1 kb
 
wlad:

refait le Conseiller Expert pour le test du week-end sans start()

1. aller au tableau

2. modifier les paramètres

3. le journal montre que la chaîne (bleu) reçoit des valeurs erronées d'une variable externe, contrairement à int (vert)





Et il y a bien un bug....Les variables définies au niveau externe ne sont pas initialisées lors du redémarrage de l'EA, mais prennent un peu de merde des redémarrages précédents...Merci à Wlad pour sa patience)))))
 

Et il y a un thème ici aussi... un indicateur simple dans lequel il y a

#property indicator_color1 Red
и

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

La couleur reste Rouge avec son épaisseur... Jusqu'à ce que vous supprimiez de force l'indicateur et le redémarriez, c'est-à-dire qu'une simple recompilation n'est d'aucune utilité. Il s'avère que les paramètres sont tirés de certains troncs..... Des conneries, bien sûr, mais wlad y est arrivé))))

 
Apparemment c'est lié, j'ai remarqué depuis longtemps, parfois vous changez le code EA, le compilez, mais le code précédent fonctionne, jusqu'à ce que vous rechargiez le terminal. Même le redémarrage du conseiller-expert n'y change rien. Mais ce n'est pas toujours le cas, alors j'y vais doucement. Eh bien, il est là... Ça ne semble pas trop me déranger.
 

Ouais,

ce serait bien si les développeurs pouvaient le corriger

ou est-il inutile d'écrire ici et de s'adresser directement au service d'assistance ?

Au fait, où puis-je aller ?

 
Sepulca:
Э... félicitez-moi, je suis un peu grand-père, pas vraiment, mais les enfants l'admettent......)))

Félicitations ! Quel âge a grand-père ?
 

Veuillez me conseiller

Comment contacter l'étrier ?

Je ne le trouve nulle part

 
wlad:

Veuillez me conseiller

Comment contacter l'étrier ?

Je ne le trouve nulle part

Vous ne pouvez pas le faire directement à partir du quatrième forum. Vous pouvez le faire à partir du cinquième forum. Voir le lien "Service Desk" dans votre profil mql5.com (à gauche, dans la colonne avec la liste des services du profil).
 
MetaDriver:
Vous ne pouvez pas le faire directement à partir du quatrième forum. Vous pouvez le faire à partir du cinquième forum. Voir le lien "Service Desk" dans votre profil mql5.com (à gauche, dans la colonne avec la liste des services du profil).
Merci, je vais vérifier.
 
wlad:

refait le Conseiller Expert pour le test du week-end sans start()

1. aller au tableau

2. modifier les paramètres

3. le journal montre que la chaîne (bleu) reçoit des valeurs erronées d'une variable externe, contrairement à int (vert)



Il n'est pas reproductible dans lenouveau compilateur. Personne ne changera jamais l'ancien.

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()
  {
//---

  }
//+------------------------------------------------------------------+