Скачать MetaTrader 5

undeclared identifier (можно поправить?)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Написал программу? Опубликуй ее в Code Base!
Vasyl Nosal
18549
Vasyl Nosal 2014.04.01 11:46 

Вот такая ситуация. Обычно при расчётах индикаторов.

if(use_rsi)
{
double rsi=iRSI(Symbol(),0,14,0,0);
}

if(use_rsi && rsi>50)
return;

Тоесть нельзя использовать объявленные в if переменные вне действия if. if выступает как бы функцией.

Можно переделать чтобы вот в таком случае можно было объявлять в if и использовать вне if?

Проверять что в if.

Sergey Gridnev
4966
Sergey Gridnev 2014.04.01 11:47  
eevviill:

Вот такая ситуация. Обычно при расчётах индикаторов.

Тоесть нельзя использовать объявленные в if переменные вне действия if. if выступает как бы функцией.

Можно переделать чтобы вот в таком случае можно было объявлять в if и использовать вне if?

Проверять что в if.


Объявленную в блоке переменную нельзя использовать за пределами блока.

Блок, это то, что заключено в {}

Alexey Viktorov
6849
Alexey Viktorov 2014.04.01 12:10  
Убери #property strict
Paladin80
703
Paladin80 2014.04.01 12:33  
eevviill:

Вот такая ситуация. Обычно при расчётах индикаторов.

Тоесть нельзя использовать объявленные в if переменные вне действия if. if выступает как бы функцией.

Можно переделать чтобы вот в таком случае можно было объявлять в if и использовать вне if?

Проверять что в if.

double rsi;
if(use_rsi)
 {
  rsi=iRSI(Symbol(),0,14,0,0);
 }

if(use_rsi && rsi>50)
 return;
Vasyl Nosal
18549
Vasyl Nosal 2014.04.01 13:02  
Contender:


Объявленную в блоке переменную нельзя использовать за пределами блока.

Блок, это то, что заключено в {}


Зачем мне писать то что я написал?

Я всё понимаю. Я прошу разработчиков если это возможно сделать как я прошу.

Sergey Gridnev
4966
Sergey Gridnev 2014.04.01 13:08  
eevviill:


Зачем мне писать то что я написал?

Я всё понимаю. Я прошу разработчиков если это возможно сделать как я прошу.


То, что переменная уничтожается и за пределами блока не видна - правильно.
Vasyl Nosal
18549
Vasyl Nosal 2014.04.01 15:41  
Contender:

То, что переменная уничтожается и за пределами блока не видна - правильно.

А в моём примере?
Sergey Gridnev
4966
Sergey Gridnev 2014.04.02 05:25  
eevviill:

А в моём примере?


В вашем примере переменная rsi объявлена в блоке, за пределами этого блока её нет. И это правильно (что её нет за пределами блока). Если вам нужна переменная вне блока, так объявите её вне бока.

Vasyl Nosal
18549
Vasyl Nosal 2014.04.02 06:58  
Contender:


В вашем примере переменная rsi объявлена в блоке, за пределами этого блока её нет. И это правильно (что её нет за пределами блока). Если вам нужна переменная вне блока, так объявите её вне бока.


Неа. В моём примере как раз всё правильно. Вернее прошу чтобы так сделали для таких случаев.
Sergey Gridnev
4966
Sergey Gridnev 2014.04.02 07:03  
eevviill:

Неа. В моём примере как раз всё правильно. Вернее прошу чтобы так сделали для таких случаев.


Если вы считаете, что это ошибка языка, то напишите в сервисдеск (он на форуме по MQL5).

Но это не ошибка.

Paladin80
703
Paladin80 2014.04.03 05:31  
eevviill:

Неа. В моём примере как раз всё правильно. Вернее прошу чтобы так сделали для таких случаев.
Не сделают как вам надо. До улучшения компилятора как раз и было так вам надо, но сейчас точно обратно не вернут. Новый способ даёт больше плюсов, чем минусов. Я бы наоборот голосовал за то, чтобы оставили так как сейчас. В вашем случае объявляйте переменную перед блоком. Другого выхода не вижу.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий