Скачать MetaTrader 5

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

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

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

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

Ihor Herasko
11333
Ihor Herasko  

Массивы Bars_Bulls и Bars_Bears имеют нулевой размер (нет в них элементов). Поэтому любое обращение к их элементам приводит к выходу за пределы массива.

Перед использованием массивов необходимо задать их размер при помощи ArrayResize или путем связывания массива с буфером индикатора (SetIndexBuffer).

Roman Starinskij
1870
Roman Starinskij  
<Спасибо, кажется понял. В PHP полегче с массивами.
_SERG_
111
_SERG_  

О! Походу кто подскажет, можно ли имя массива генерить динамически, что-то так:

 string ArrName = "ИМЯ" + IntegerToString(123456789);

 double &ArrName [ ][20];

 ArrayResize( &ArrName, 10);

Какие варианты? А то не охота с бинарными файлами париться.

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