Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен OpenCL? MQL5 предоставляет такую возможность!
Евгений
16
Евгений 2012.07.13 08:18 

Здравствуйте!

Прошу помочь разобраться в следующей проблеме.

Казалось бы элементращина - но...

Итак имеем код индикатора:

---------------------------------------------------------------------------

#property indicator_separate_window

int start()

{

double mymassiv[];

mymassiv[0] = 17.0;

mymassiv[1] = 195.0;

Alert(mymassiv[0]);

return;

}

-------------------------------------------------------------------------

По идее должен выскакивать алерт со значением 17. Но алерт упорно выдает значение 0.

Почему?

Vadim Zhunko
5220
Vadim Zhunko 2012.07.13 08:24  

Размер массива не указан.

void start()
 {
  double mymassiv[2];
  mymassiv[0] = 17.0;
  mymassiv[1] = 195.0;
  Alert(mymassiv[0]); 
 }
Евгений
16
Евгений 2012.07.13 08:31  
Zhunko:
Размер массива не указан.


Хм...в документации сказано, что размер массива компилятор определяет самостоятельно.

И потом. Даже если указать размер массива и дать вот такой вот код:

#property indicator_separate_window

int start()

{

double mymassiv[1];

mymassiv[0] = 17.0;

mymassiv[1] = 195.0;

Alert(mymassiv[1]);

return;

}

Алерт почему-то выдает 0 (!), а не 195 (что логично).

Почему? Help!

Vadim Zhunko
5220
Vadim Zhunko 2012.07.13 08:34  
Потому что размер массива одна ячейка, а обращаетесь во вторую с номером 1. Её нет.
Евгений
16
Евгений 2012.07.13 08:42  

По поводу ячейки - точно - размерность не с ноля а с единицы задается - как то не дошло сразу. Спасибо:)

И все-таки поводу автоматического определения компилятором размерности массива. Почему не работает? В документации сказано Noproblem ;)

Vadim Zhunko
5220
Vadim Zhunko 2012.07.13 08:46  
matstat:

По поводу ячейки - точно - размерность не с ноля а с единицы задается - как то не дошло сразу. Спасибо:)

И все-таки поводу автоматического определения компилятором размерности массива. Почему не работает? В документации сказано Noproblem ;)

Это работает только для статической инициализации.

void start()
 {
  double mymassiv[] = {17, 195};
  Alert(mymassiv[0], ", ", mymassiv[1]); 
 }
Евгений
16
Евгений 2012.07.13 08:49  
Zhunko:

Это работает только для статической инициализации.


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