Quelle est la cause de l'erreur de débordement de pile dans mql4 ? - page 2

 
RaptorUK:
Si vous ne voulez pas poster tout le code, afin que l'erreur puisse être reproduite, veuillez coder quelque chose que vous pouvez poster en entier et qui reproduira la même erreur.


Voir mon message juste avant celui-ci.
 
Vous avez joint
11/13/2013 03:25 PM 37,911 Ind_error_tester.mq4
11/13/2013 03:25 PM 37,911 Ind_error_tester_Neutralized.mq4
Les deux fichiers sont identiques.
 
WHRoeder:
Vous avez joint
11/13/2013 03:25 PM 37,911 Ind_error_tester.mq4
11/13/2013 03:25 PM 37,911 Ind_error_tester_Neutralized.mq4
Les deux fichiers sont identiques.

Oui, désolé. J'ai joint à nouveau.
Dossiers :
 
avec mt4, on va être des codeurs ou des collecteurs de bugs ?
 
RaptorUK:
... pourquoi votre fonction est de type int?
Dommage que vous n'ayez pas répondu à cette question... faites de la fonction un void car elle n'a pas besoin de retourner quoi que ce soit, supprimez le return(0) recompilez, que se passe-t-il ?
 
Apparemment, il ne peut pas gérer une fonction aussi importante.
//+-------------------------------------------
//| Custom indicator initialization function  
//+-------------------------------------------
 int init()
  {
//---- indicators

int Column1x=10,Column2x=300,Column3x=590,
    Column1xp=70,Column2xp=360,Column3xp=650,
    Column1xg=130,Column2xg=420,Column3xg=710,
    Column1xa=250,Column2xa=540,Column3xa=830;

//---------------USD--------------------------
   //---- EURUSD-------------------
   ObjectCreate("EURUSD", OBJ_LABEL, 0, 0, 0);
 :
   ObjectSet("EURGBP2", OBJPROP_YDISTANCE, ZoomTimes*60);



   ObjectCreate("EURGBP2c", OBJ_LABEL, 0, 0, 0);
:
//+------------------------------------------------------
//| Custom indicator initialization function             
//+------------------------------------------------------
int Column1x=10,Column2x=300,Column3x=590,
    Column1xp=70,Column2xp=360,Column3xp=650,
    Column1xg=130,Column2xg=420,Column3xg=710,
    Column1xa=250,Column2xa=540,Column3xa=830;
int init(){ init1(); init2(); }
int init1()
  {
//---- indicators

//---------------USD------------------------------------
   //---- EURUSD-------------------
   ObjectCreate("EURUSD", OBJ_LABEL, 0, 0, 0);
:
   ObjectSet("EURGBP2", OBJPROP_YDISTANCE, ZoomTimes*60);
}
int init2()
  {
   ObjectCreate("EURGBP2c", OBJ_LABEL, 0, 0, 0);
:
 
RaptorUK:
Dommage que vous n'ayez pas répondu à cette question... faites de la fonction un void car elle n'a pas besoin de retourner quoi que ce soit, supprimez le return(0) recompilez, que se passe-t-il ?


Oui, cela règle aussi le problème. MAIS pourquoi ? Je veux dire que si nous disons que la fonction était un int et que nous avons besoin de la valeur. Pourquoi le fait de changer une partie des objets résout le problème, que la fonction soit int ou non. Même start, init et deinit sont des int et ils retournent(0) donc ce n'est pas le problème.
 
WHRoeder:
Apparemment, il ne peut pas gérer une fonction aussi importante.


Whroeder comprend ce dont je parle.
 
tonny:

Oui, c'est aussi le cas. MAIS pourquoi ? Je veux dire que si nous disions que la fonction était un int et que nous avions besoin de la valeur. Pourquoi le fait de changer une partie des objets résout le problème, que la fonction soit int ou non. Même start, init et deinit sont des int et ils renvoient (0) donc ce n'est pas le problème.
return(0) renvoie un int, l'int est zéro ... un void ne renvoie pas de valeur, si vous voulez ou renvoyer d'une fonction void au début vous utilisez return ;
 
tonny:

whroeder comprend ce dont je parle.
Mais il peut gérer une fonction de cette taille... Comme je l'ai expliqué, changez le type de fonction et il n'y a pas d'erreur de compilation pour la même taille de fonction...