Ошибка в тестере (build 213) - страница 2

 
Здравствуйте, Михаил.

Дело в том, что в MQL4 нет понятия статического массива. Поэтому, если Вы хотите гарантиированно иметь инициализированные массивы в библиотеках, то должны явно и самостоятельно проводить нужную инициализацию. Сделать это можно в блоках init() и deinit(), они работают в библиотеках. Вот примерный код такой библиотеки.

//+------------------------------------------------------------------+
//|                                                        proba.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net/ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/ru/"
 
#property copyright "Михаил"
#property link ""
#property library
 
int proba_static[2];
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   proba_static[0]=0;
   proba_static[1]=0;
   Print("Инициализация библиотеки proba()");
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
   {
   Print("Деинициализация библиотеки proba()");
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int proba()
   {
   int ret=proba_static[1];
   proba_static[1]=proba_static[1]+1;
 
   return(ret);
   }
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
// int MyCalculator(int value,int value2)
//   {
//    return(value+value2);
//   }
//+------------------------------------------------------------------+

Тем не менее ошибка все же была. Не производилась инициализация и деинициализация библиотек, загружаемых в тестере. В данный момент ошибка исправлена, и приведенная библиотека в тестере будет сообщать о фактах инициализации и деинициализации, как на рисунке:



Спасибо Вам за найденную ошибку и поднятую тему. Исправленная версия будет доступна после дополнительных проверок.

Причина обращения: