Скачать MetaTrader 5

SWITCH

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Создавай темы на форуме и увеличивай рейтинг!
Forex Trader
114255
Forex Trader 2005.11.03 08:16 
Есть такие строки:

int init()
{
string vl="EURUSD";
}

int start()
{
switch (vl)
{
case "EURUSD": P=1; break;
case "USDCAD": P=2; break;
case "AUDUSD": P=3; break;
case "EURJPY": P=4; break;
}

компилятор ругается:

'switch' - different types in switch statement

получается, что он не видит, ЧТО vl строковая переменная или я где чего не доделал?
Forex Trader
114255
Forex Trader 2005.11.03 09:12  
Блин, ну посмотрите же хелп! Там же написано, что свитч работает только с интовыми переменными.
Forex Trader
114255
Forex Trader 2005.11.03 09:20  
Блин, ну посмотрите же хелп! Там же написано, что свитч работает только с интовыми переменными.


Из хелпа, набираешь в строке поиска switch:

Сравнивает значение выражения с константами во всех вариантах case и передает управление оператору, который соответствует значению выражения. Каждый вариант case может быть помечен целой или символьной константой, или константным выражением. Конста нтное выражение не может включать переменные или вызовы функций.
"EURUSD" разве не символьная константа?
про int написано, ИЛИ СИМВОЛЬНАЯ КОНСТАНТА
Forex Trader
114255
Forex Trader 2005.11.03 09:59  
"EURUSD" разве не символьная константа?

нет. это строковая константа. символьная константа в отличие от строковой может содержать только один символ. символьная константа заключается в одиночные кавычки (строковая - в двойные).
Forex Trader
114255
Forex Trader 2005.11.03 10:05  
"EURUSD" разве не символьная константа?

нет. это строковая константа. символьная константа в отличие от строковой может содержать только один символ. символьная константа заключается в одиночные кавычки (строковая - в двойные).


Понятно
Forex Trader
114255
Forex Trader 2005.11.03 10:12  
"EURUSD" разве не символьная константа?

нет. это строковая константа. символьная константа в отличие от строковой может содержать только один символ. символьная константа заключается в одиночные кавычки (строковая - в двойные).


Slawa, так можно обойти?
switch (i)
{
case 1: vl="EURUSD";P=1; break;
case 2: vl="USDCAD";P=2; break;
case 3: vl="AUDUSD";P=3; break;
case 4: vl="EURJPY";P=4; break;
}
Forex Trader
114255
Forex Trader 2005.11.03 10:29  
убрал
Forex Trader
114255
Forex Trader 2005.11.03 10:36  
Slawa, так можно обойти?
switch (i)
   {
   case 1: vl="EURUSD";P=1; break;
   case 2: vl="USDCAD";P=2; break;
   case 3: vl="AUDUSD";P=3; break;
   case 4: vl="EURJPY";P=4; break;
   }



с точки зрения синтаксиса код написан правильно. самое главное, чтобы Вы правильно назначали значения переменной i
Forex Trader
114255
Forex Trader 2005.11.03 10:45  
[/quote]
с точки зрения синтаксиса код написан правильно. самое главное, чтобы Вы правильно назначали значения переменной i [/quote]

в init устанавливаем i=1

start()
{
switch(i)
в самом конце советника изменяем i: (Valut_p равно количеству пар, в данном случае 4)

if (i<=Valut_p)
{
i=i+1;
}
if (i>Valut_p)
{
i=1;
}
MetaQuotes Software Corp.
Модератор
181023
MetaQuotes Software Corp. 2005.11.03 10:59  
в init устанавливаем i=1

Если это так, то ошибка:
int init()
  {
   int i=0;
  }


Вы совершенно забыли про область видимости (так же как и в первом примере) переменных. i, определенная в init, является локальной переменной и никак не может быть доступна в другой функции.

Forex Trader
114255
Forex Trader 2005.11.03 11:06  
в init устанавливаем i=1

Если это так, то ошибка:
int init()
  {
   int i=0;
  }


Вы совершенно забыли про область видимости (так же как и в первом примере) переменных. i, определенная в init, является локальной переменной и никак не может быть доступна в другой функции.



если i объявлена вначале, а в init только устанавливается в 1, она будут видна в других функциях?
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий