Скачать MetaTrader 5

Объявление массива на языке MQL4 - не получается задать количество элементов, передавая значение переменной (и даже константы).

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавляй наш канал в Twitter'e и следи за новостями!
Alexander Nikolaev
17782
Alexander Nikolaev 2016.09.10 20:15 

Почему-то, при объявлении массива следующим образом: 

 int size = 10;
 bool mass[size];

Появляется ошибка: '[' - invalid index value

Хотя, на C++ этот код нормально компилируется и работает.

Возможно ли на Mql4 количество элементов задать из переменной? Или всегда нужно использовать только числа? 

Maxim Kuznetsov
9623
Maxim Kuznetsov 2016.09.10 20:18  
Alexander Nikolaev:

Почему-то, при объявлении массива следующим образом: 

Появляется ошибка: '[' - invalid index value

Хотя, на C++ этот код нормально компилируется и работает.

Возможно ли на Mql4 количество элементов задать из переменной? Или всегда нужно использовать только числа? 

используй mass[] и ArrayResize(mass,size) и да пребудет с тобой сила, Люк !

Dina Paches
7605
Dina Paches 2016.09.10 20:18  
Alexander Nikolaev:
int size=10;
bool mass[];
//---
ArrayResize(mass,size);
Dina Paches
7605
Dina Paches 2016.09.10 20:20  
Maxim Kuznetsov:
Одновременно отправили посты
BlackTomcat
245
BlackTomcat 2016.09.10 20:43  
Alexander Nikolaev:

Почему-то, при объявлении массива следующим образом: 

Появляется ошибка: '[' - invalid index value

Хотя, на C++ этот код нормально компилируется и работает.

Возможно ли на Mql4 количество элементов задать из переменной? Или всегда нужно использовать только числа? 

Когда-то обходил это ограничение через такую конструкцию:
#define ODD 5
double Max_D1[ODD];
double Low_D1[ODD];
Работало.
Alexander Nikolaev
17782
Alexander Nikolaev 2016.09.10 20:44  

Спасибо за ответы. 

Заодно, хотелось бы узнать, есть ли в MQL4 списки и контейнеры, такие как std::list и std::vector в C++? Или это нужно самим реализовывать? Программирую давно уже, но не находил ещё такого.

new-rena
3372
new-rena 2016.09.10 20:53  
Alexander Nikolaev:

Спасибо за ответы. 

Заодно, хотелось бы узнать, есть ли в MQL4 списки и контейнеры, такие как std::list и std::vector в C++? Или это нужно самим реализовывать? Программирую давно уже, но не находил ещё такого.

string abc[5]={"a","b","c","d","e"};

int num[5]={1,2,3,4,5};

new-rena
3372
new-rena 2016.09.10 20:56  
bool mass[10];//как вариант, если подойдет
Maxim Kuznetsov
9623
Maxim Kuznetsov 2016.09.10 21:49  
Alexander Nikolaev:

Спасибо за ответы. 

Заодно, хотелось бы узнать, есть ли в MQL4 списки и контейнеры, такие как std::list и std::vector в C++? Или это нужно самим реализовывать? Программирую давно уже, но не находил ещё такого.

аналога STL нет. MT заточен на работу с массивами (таймсериями), что естественно - старайтесь реализовывать свои алгоритмы на них.

то есть свой аналог std::list std::map можно наваять но это не из области прикладного программирования..

Dmitry Fedoseev
42886
Dmitry Fedoseev 2016.09.10 21:58  
Alexander Nikolaev:

Спасибо за ответы. 

Заодно, хотелось бы узнать, есть ли в MQL4 списки и контейнеры, такие как std::list и std::vector в C++? Или это нужно самим реализовывать? Программирую давно уже, но не находил ещё такого.

Вот что есть
Alexey Kozitsyn
6378
Alexey Kozitsyn 2016.09.11 08:15  
BlackTomcat:
Когда-то обходил это ограничение через такую конструкцию:
Работало.
+1. Похоже, только #define. Спецификатор const перед переменной тоже не проходит. Или через ArrayResize().
1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий