Что вызывает ошибку переполнения стека в mql4? - страница 2

 
RaptorUK:
Если вы не хотите публиковать весь код, чтобы ошибка могла быть воспроизведена, пожалуйста, напишите код, который вы можете опубликовать полностью, чтобы воспроизвести ту же ошибку.


См. мое сообщение непосредственно перед этим.
 
Вы прикрепили
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
Оба файла идентичны.
 
WHRoeder:
Вы прикрепили
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
Оба файла идентичны.

Да, извините. Я прикрепил еще раз.
Файлы:
 
что в мт4 мы будем кодерами или сборщиками ошибок?
 
RaptorUK:
... почему тип вашей функции int?
Жаль, что вы не ответили на этот вопрос ... сделайте функцию void , так как ей не нужно ничего возвращать, удалите return(0) перекомпилируйте, что произойдет?
 
По-видимому, он не может справиться с такой большой функцией.
//+-------------------------------------------
//| 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:
Жаль, что вы не ответили на этот вопрос... сделайте функцию void , так как ей не нужно ничего возвращать, удалите return(0) перекомпилируйте, что произойдет?

.

Да, это тоже решает проблему. Но почему? Я имею в виду, что если мы скажем, что функция была int и нам нужно значение. Почему изменение части объектов решает проблему независимо от того, является ли функция int или нет. Даже start, init и deinit являются ints и они возвращают(0), так что это не проблема.
 
WHRoeder:
По-видимому, он не может справиться с такой большой функцией.


Whroeder понимает, о чем я говорю.
 
tonny:

Да, это тоже помогает. Но почему? Я имею в виду, что если мы скажем, что функция была int и нам нужно значение. Почему изменение части объектов решает проблему независимо от того, является ли функция int или нет. Даже start, init и deinit являются ints, и они возвращают(0), так что проблема не в этом.
return(0) возвращает int, int - это ноль... void не возвращает значение, если вы хотите вернуть значение из функции void, вы используете return;
 
tonny:

понял, о чем я говорю.
Но он может обрабатывать функции такого размера ... как я уже объяснял, измените тип функции и не будет ошибки компиляции для функции такого же размера ...