Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Как подобрать необходимый сигнал и быстро подписаться на него
Roman Starinskij
1870
Roman Starinskij 2014.07.10 12:27 

Еще вчера индикатор отлично работал, рисовал линии себе. Сегодня заново скомпилировал - не работает. Линий не рисует, а ошибку выдает "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;)

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

Artyom Trishkin
Модератор
74075
Artyom Trishkin 2014.07.10 13:08  
WePlexus:

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

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

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

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

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

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

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

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

Vasiliy Aseev
276
Vasiliy Aseev 2014.07.10 15:34  
В MT4 зайди в include\arrays
Там готовый класс ArrayInt.mqh
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий