Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть вопросы к автору программы - задай их в разделе Обсуждение
Roman Starinskij
1873
Roman Starinskij 2014.07.10 09:46 

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

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

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

Roman Starinskij
1873
Roman Starinskij 2014.07.10 11:17  
<Спасибо, кажется понял. В PHP полегче с массивами.
_SERG_
84
_SERG_ 2014.07.11 02:17  

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

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

 double &ArrName [ ][20];

 ArrayResize( &ArrName, 10);

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

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