SWITCH

 
Есть такие строки:

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 строковая переменная или я где чего не доделал?
 
Блин, ну посмотрите же хелп! Там же написано, что свитч работает только с интовыми переменными.
 
Блин, ну посмотрите же хелп! Там же написано, что свитч работает только с интовыми переменными.


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

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

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

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


Понятно
 
"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;
}
 
убрал
 
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
 
[/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;
}
 
в init устанавливаем i=1

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


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

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

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


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



если i объявлена вначале, а в init только устанавливается в 1, она будут видна в других функциях?
Причина обращения: