Определяйте сперва пустой массив (динамический), а при инициализации изменяйте его размер с помощью функции ArrayResize
extern int limit = 500; ........ double Ma1[]; OnInit() { ArrayResize(Ma1, limit); }
ДД, Гуру Программирования.
Скажите, что не так?
Хочу вынести во внешние настройки размер массива для индикатора:
А компилятор на это мне пишет:
Описание:
'[' - invalid index value
и указывает именно на описание массива, типа его такая конструкция не устраивает.
Скажите, что не так?
ArrayResize(Ma1,limit);
а эту строчку
double Ma1[limit];
замените на
double Ma1[];
У меня сейчас
double Ma1[500]...........;
определяются после int start()
Если в init() идёт ресайз массива, тогда их надо вынести наружу, ДО start() ? Я правильно понимаю?
Если у вас задан размер массива то это статический массив. Его размер изменить нельзя. Изменяется размер только у динамических массивов.
У меня сейчас
определяются после int start()
Если в init() идёт ресайз массива, тогда их надо вынести наружу, ДО start() ? Я правильно понимаю?
Если у Вас размер массива определяется один раз, то достаточно проинициализоравть его один раз. Соответственно помещаем в init()
Судя по Вашему первому коду это действительно так:
extern int limit = 500;
Если Вы уже не собираетесь задавать размер массива через внешние переменные, то конечно достаточно объявить массив с заданной заранее размерностью еще до init() и до start()
double Ma1[500];
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ДД, Гуру Программирования.
Скажите, что не так?
Хочу вынести во внешние настройки размер массива для индикатора:
А компилятор на это мне пишет:
Описание:
'[' - invalid index value
и указывает именно на описание массива, типа его такая конструкция не устраивает.
При том, что
double Ma1[500];
ему вполне по душе.
Скажите, что не так?