Проблема платформы MetaTrader 4 build 1184

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Yurij Izyumov
45279
Yurij Izyumov  

Не смотря на то что вроде я думал больше обновлений не будет вроде бы проскочило обновление терминала и в итоге перестало что либо работать код простой , просто массивы создаются, заполняются и вообще никак не работает

ни если сразу размер задать, ни если создать нулевой и потом ресайзить в нужный причем ошибки разные 

в первом случае просто обращается к несуществующим ячейкам , во втором случае вообще ужас 

int HourStart[], HourEnd[];

int OnInit()
  {
   ArrayResize(HourStart,5); ArrayResize(HourEnd,5);
   HourStart[0] = 1;   HourEnd[0] = 6;
   HourStart[1] = 2;   HourEnd[1] = 7;
   HourStart[2] = 3;   HourEnd[2] = 8;
   HourStart[3] = 4;   HourEnd[3] = 9;
   HourStart[4] = 5;   HourEnd[4] = 10;
   Print((string)ArraySize(HourStart)+" -- "+(string)ArraySize(HourEnd));
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
      Print((string)ArraySize(HourStart)+" -- "+(string)ArraySize(HourEnd));
  }

выдает

2019.08.18 12:11:17.631 Access violation write to 0x00000005 in 'C:\Users\tor\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E\MQL4\Experts\test.ex4'

а вот такой вариант 

int HourStart[5], HourEnd[5];

int OnInit()
  {
   //ArrayResize(HourStart,5); ArrayResize(HourEnd,5);
   HourStart[0] = 1;   HourEnd[0] = 6;
   HourStart[1] = 2;   HourEnd[1] = 7;
   HourStart[2] = 3;   HourEnd[2] = 8;
   HourStart[3] = 4;   HourEnd[3] = 9;
   HourStart[4] = 5;   HourEnd[4] = 10;
   Print((string)ArraySize(HourStart)+" -- "+(string)ArraySize(HourEnd));
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
      Print((string)ArraySize(HourStart)+" -- "+(string)ArraySize(HourEnd));
  }

выдает

2019.08.18 12:13:03.057 test USDCHF,M30: array out of range in 'test.mq4' (20,31)


в сервисдеске не вижу темы как им писать по этому пишу тут 

у меня ос Win7  64 бита, проц. AMD Phenom II X4 945 

Файлы:
test.mq4 2 kb
Renat Akhtyamov
16195
Renat Akhtyamov  

а если

1)

{

...

return;

}

2)

double HourStart[5], HourEnd[5];

?

Yurij Izyumov
45279
Yurij Izyumov  
Renat Akhtyamov:

а если

1)

{

...

return;

}

2)

?

если массив int то 

2019.08.19 10:34:56.364 test USDCHF,M30: array out of range in 'test.mq4' (28,11)

если массив double to

2019.08.19 10:34:11.519 test USDCHF,M30: array access error
до ретурнов никаких ничего не доходит
Alexey Volchanskiy
27341
Alexey Volchanskiy  

Не поверил и решил воспроизвести!

Да, метаквоты поломали динамические массивы, в динамический массив нельзя теперь писать, уже и так и так пробовал, даже проект создал

2019.08.19 12:35:09.300 Expert Test1184-2 EURUSD,M15: removed

2019.08.19 12:35:09.296 Test1184-2 EURUSD,M15: uninit reason 1

2019.08.19 12:35:03.189 Access violation write to 0x0000000F in 'E:\Forex\School\ExnessDevelop\MQL4\Experts\Tests\Test1184-2\Test1184-2.ex4'

2019.08.19 12:34:45.767 Test1184-2 EURUSD,M15: initialized

2019.08.19 12:34:45.262 Test1184-2 EURUSD,M15: HourEnd is dynamic

2019.08.19 12:34:45.262 Test1184-2 EURUSD,M15: HourStart is dynamic

2019.08.19 12:34:42.611 Expert Tests\Test1184-2\Test1184-2 EURUSD,M15: loaded successfully

#property strict

int HourStart[], HourEnd[];

int OnInit()
{
    if (ArrayIsDynamic(HourStart)) 
    {
        ArrayResize(HourStart,5,10); 
        Print("HourStart is dynamic"); 
    }    
    if (ArrayIsDynamic(HourEnd)) 
    {
        ArrayResize(HourEnd,5,10);
        Print("HourEnd is dynamic"); 
    }    
    ArrayInitialize(HourStart, 0);
    ArrayInitialize(HourEnd, 0);
    Sleep(500);
   /*HourStart[0] = 1;   HourEnd[0] = 6;
   HourStart[1] = 2;   HourEnd[1] = 7;
   HourStart[2] = 3;   HourEnd[2] = 8;
   HourStart[3] = 4;   HourEnd[3] = 9;
   HourStart[4] = 5;   HourEnd[4] = 10;*/
   //Print((string)ArraySize(HourStart)+" -- "+(string)ArraySize(HourEnd));
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
  {
  }

void OnTick()
  {
     HourStart[0] = 1;   HourEnd[0] = 6; // тут падает!

//      Print((string)ArraySize(HourStart)+" -- "+(string)ArraySize(HourEnd));
  }


MetaQuotes
Модератор
219141
MetaQuotes  

Выпустили новую бету MetaTrader 4 build 1186 на MetaQuotes-Demo с исправлением.

Мы планируем выпустить релиз MetaTrader 4 с накопительными багфиксами к концу августа. Также будет доступен обновленный MQL4/MQL5 компилятор от MetaTrader 5.

Обновитесь, пожалуйста.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий