Индекс массива

 

ДД, Гуру Программирования.

Скажите, что не так?

Хочу вынести во внешние настройки размер массива для индикатора:

extern int limit = 500; 
........
double Ma1[limit];

А компилятор на это мне пишет:

Описание:

    '[' - invalid index value

и указывает именно на описание массива, типа его такая конструкция не устраивает.

При том, что 

double Ma1[500]; 

ему вполне по душе.

                   Скажите, что не так?

 
Artemij:

Определяйте сперва пустой массив (динамический), а при инициализации изменяйте его размер с помощью функции ArrayResize

extern int limit = 500; 
........
double Ma1[];

OnInit()
{
   ArrayResize(Ma1, limit);
}
 
Artemij:

ДД, Гуру Программирования.

Скажите, что не так?

Хочу вынести во внешние настройки размер массива для индикатора:

А компилятор на это мне пишет:

Описание:

    '[' - invalid index value

и указывает именно на описание массива, типа его такая конструкция не устраивает.

Скажите, что не так?

просто в OnInit() или в init() используйте
ArrayResize(Ma1,limit);

а эту строчку

double Ma1[limit];

замените на

double Ma1[];
 

У меня сейчас

double Ma1[500]...........;


 определяются после int start()

Если в init() идёт ресайз массива, тогда их надо вынести наружу, ДО start() ? Я правильно понимаю? 


 
Artemij:

Если у вас задан размер массива то это статический массив. Его размер изменить нельзя. Изменяется размер только у динамических массивов.

 
Artemij:

У меня сейчас


 определяются после int start()

Если в init() идёт ресайз массива, тогда их надо вынести наружу, ДО start() ? Я правильно понимаю? 


Если у Вас размер массива определяется один раз, то достаточно проинициализоравть его один раз. Соответственно помещаем в init()

Судя по Вашему первому коду это действительно так:

extern int limit = 500;

Если Вы уже не собираетесь задавать размер массива через внешние переменные, то конечно достаточно объявить массив с заданной заранее размерностью еще до init() и до start()

double Ma1[500];