Что за зверь (array out of range)

 

Еще вчера индикатор отлично работал, рисовал линии себе. Сегодня заново скомпилировал - не работает. Линий не рисует, а ошибку выдает "array out of range".

Обычный себе код (примерно написано):

double Bars_Bulls[],
       Bars_Bears[];

for (int i = 0; i < WindowFirstVisibleBar(); i ++)
{
   Bars_Bulls[i] = 1;
   Bars_Bears[i] = 2;
}

Ошибку говорит, на строке (Bars_Bulls[i] = 1;)

Почему это появляется, я не так работаю с массивами? Вчера еще все работало. Массивы всех стандартных индикаторов, кажется, так и написаны.

 
WePlexus:

Еще вчера индикатор отлично работал, рисовал линии себе. Сегодня заново скомпилировал - не работает. Линий не рисует, а ошибку выдает "array out of range".

Обычный себе код (примерно написано):

Ошибку говорит, на строке (Bars_Bulls[i] = 1;)

Почему это появляется, я не так работаю с массивами? Вчера еще все работало. Массивы всех стандартных индикаторов, кажется, так и написаны.

Массив увеличивайте динамически
 
artmedia70:
Массив увеличивайте динамически
А как, можно пример?
 
WePlexus:
А как, можно пример?
У вас нулевой размер массива. Куда там значение вписывать? Заведите переменную, хранящую размер массива и увеличивайте ее значение каждый раз перед записью в массив нового значения. Потом ArrayResize(Bars_Bulls,имя_этой_переменной); И только потом уже запись значения в массив. Хотя... Для каждого случая может быть своё решение..
 
artmedia70:
У вас нулевой размер массива. Куда там значение вписывать? Заведите переменную, хранящую размер массива и увеличивайте ее значение каждый раз перед записью в массив нового значения. Потом ArrayResize(Bars_Bulls,имя_этой_переменной); И только потом уже запись значения в массив. Хотя... Для каждого случая может быть своё решение..

[] эти вот кажется создается безразмерный массив. а [i] я создаю новое значение массива.

Было конечно удобней, чтобы программа сама "видела" количество элементов массива, без дополнительный функций.

Буду изучать. Спасибо за помощь. 

 
В MT4 зайди в include\arrays
Там готовый класс ArrayInt.mqh
Причина обращения: