Новая версия платформы MetaTrader 5 build 2190 - страница 22

 
fxsaber:

Хотел задать верхнюю границу цикла на этапе компиляции.

Ну так для этого массив должен быть статическим. А для этого ему надо задать длину. Разве не так?

 
fxsaber:

Если уберете const, то ArrayResize все равно будет возвращать -1, т.к. массив статический.

int ControlID[] = {1,2};  
Print((string)ArrayResize(ControlID, 3));

Действительно возвращает -1
И есть предупреждение компилятора.

cannot be used for static allocated array       

Странно конечно, что инициализация при объявлении динамического массива, делает массив статичным.
В этом может и есть ошибка.

 
fxsaber:

Если уберете const, то ArrayResize все равно будет возвращать -1, т.к. массив статический.

А вот так массив остаётся динамическим. И ошибок нет.

  int ControlID[];
  ArrayResize(ControlID, 2);  
  ControlID[0] = 1;
  ControlID[1] = 2;    
  
  Print("ArraySize " + (string)ArraySize(ControlID));
  
  int res = ArrayResize(ControlID, 3);
  
  ControlID[2] = 3;
  
  Print("ArrayResize " + (string)res);
 
Roman:

А вот так массив остаётся динамическим. И ошибок нет.

И?

 
fxsaber:

И?

Просто показал другой вид записи, который не делает динамический массив статичным.

 
Roman:

Просто показал другой вид записи, который не делает динамический массив статичным.

Исходное сообщение было о другом.

 
fxsaber:

Исходное сообщение было о другом.

x32 терминал и редактор ещё нужен?

 
Vladimir Karputov:

x32 терминал и редактор ещё нужен?

Нет, спасибо. spyxx_amd64.exe отлично справился с x64-терминалом.

 
fxsaber:

Исходное сообщение было о другом.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2190

Roman, 2019.11.12 07:52

Так Array1[] не чем не инициализирован, по этому в нём содержится произвольный мусор.
Или я не правильно понял смысл вопроса?
Видимо в mql пустые скобки { } не инициализируют нулями, как в плюсах.


Или как вариант, sizeof возвращает, заранее алоцированный размер, пустого массива.
 

Выпустили бету 2208:


Обновиться можно через меню Справка -> Проверить обновления.
Причина обращения: