Cosa causa l'errore di stack overflow in mql4? - pagina 2

 
RaptorUK:
Se non vuoi postare tutto il codice, in modo che l'errore possa essere riprodotto, per favore codifica qualcosa che puoi postare per intero che riproduca lo stesso errore.


Vedi il mio post appena prima di questo.
 
Hai allegato
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
Entrambi i file sono identici.
 
WHRoeder:
Hai allegato
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
Entrambi i file sono identici.

Sì, scusate. Ho allegato di nuovo.
 
con mt4 saremo codificatori o raccoglitori di bug
 
RaptorUK:
... perché la tua funzione è di tipo int?
Peccato che non hai risposto a questa domanda . . . fare la funzione un void visto che non ha bisogno di restituire nulla, togliere il return(0) ricompilare, cosa succede ?
 
Apparentemente non può gestire una funzione così grande.
//+-------------------------------------------
//| 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:
Peccato che non hai risposto a questa domanda. ... fai la funzione un void visto che non ha bisogno di restituire nulla, rimuovi il return(0) ricompila, cosa succede?


Sì, anche questo lo risolve. MA perché? Voglio dire, cosa succede se diciamo che la funzione era un int e avevamo bisogno del valore. Perché cambiare una parte degli oggetti risolve il problema indipendentemente dal fatto che la funzione sia int o meno. Anche start, init e deinit sono ints e restituiscono(0) quindi non è questo il problema.
 
WHRoeder:
Apparentemente non può gestire una funzione così grande.


Whroeder ha capito di cosa sto parlando.
 
tonny:

Sì, anche questo lo mette a posto. MA perché? Voglio dire, e se diciamo che la funzione era un int e avevamo bisogno del valore. Perché cambiare una parte degli oggetti risolve il problema indipendentemente dal fatto che la funzione sia int o meno. Anche start, init e deinit sono ints e restituiscono(0) quindi non è questo il problema.
return(0) sta restituendo un int, l'int è zero . . . un void non restituisce un valore, se vuoi o restituisci da una funzione void presto usi return;
 
tonny:

whroeder che ottiene ciò di cui sto parlando.
Ma può gestire una funzione così grande. . . come ho spiegato, cambia il tipo di funzione e non c'è nessun errore di compilazione per la stessa dimensione della funzione. . .