Форум программистов, компьютерный форум CyberForum.ru

Switch. Почему не работает? VC++ Studio 2010 - C++

Восстановить пароль Регистрация
 
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 11:11     Switch. Почему не работает? VC++ Studio 2010 #1
Помогите плз.
Есть форма Spells.h. Вот код
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void l1_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card('l1');
             Rf->ShowDialog();
         }
private: System::Void l2_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card('l2');
             Rf->ShowDialog();
         }
В форме Card.h
C++
1
2
3
4
5
6
7
8
9
Card(char varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var;
        }
                char var;
C++
1
2
3
4
5
6
7
8
9
10
11
12
private: System::Void Card_Load(System::Object^  sender, System::EventArgs^  e) 
             {
                 switch (var)
                 {
                 case 'l1':
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Heal.png");
                     break;
                 case 'l2':
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Cleansing-Light.png");
                     break;
                 }
             }
Почему не работает? С той же переменной через if всё ок. А свич не пашет Через int вместо char тоже не работает.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
17.10.2013, 11:17     Switch. Почему не работает? VC++ Studio 2010 #2
char var - для 1 символа, char var[] - для строки, соответственно в case 'l1': ты сравниваешь 'l1' с 1им символом
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 11:48  [ТС]     Switch. Почему не работает? VC++ Studio 2010 #3
Цитата Сообщение от dzrkot Посмотреть сообщение
char var - для 1 символа, char var[] - для строки, соответственно в case 'l1': ты сравниваешь 'l1' с 1им символом
Не очень вас понял, как нужно то
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var[];
        }
        char var[];
Вот так не работает.
И да, почему через int вместо char и 11 вместо 'l1' и 12 вместо 'l2' не работает?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
17.10.2013, 11:53     Switch. Почему не работает? VC++ Studio 2010 #4
Цитата Сообщение от UnrealFire Посмотреть сообщение
Не очень вас понял, как нужно то
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var[];
        }
        char var[];
Вот так не работает.
И да, почему через int вместо char и 11 вместо 'l1' и 12 вместо 'l2' не работает?
как ты умудрился такой код написать...?) я думал ты поймёшь....Вообщем если ты используешь тип char для переменной, то в нё ты можешь записать только 1(один) символ. Для того, чтобы хранить в нём строку, ты должен создать массив char'ов , т.е. char a[10] к примеру. У тебя в проге switch сработает, если ты введёшь в var "l1", но это не возможно, т.к. var объявлен как просто char, а не как массив. Если ты в case напишешь не 'l1', а просто '1', то при char var='1'; всё будет работать
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 11:56  [ТС]     Switch. Почему не работает? VC++ Studio 2010 #5
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char varform[3])
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            varform = var[3];
        }
        char var[3];
ругается на char var[3]; пишет не может быть стандартным массивом.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
17.10.2013, 12:04     Switch. Почему не работает? VC++ Studio 2010 #6
1)потому что нельзя так их передавать в функцию/конструктор
2)нельзя присваивать 1 массив другому массиву так, как ты написал (надо это делать поэлементно)

читай книги что я могу сказать, у тебя пробелы в базовых знаниях, а ты пытаешься класс написать...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 12:12     Switch. Почему не работает? VC++ Studio 2010 #7
Может, как-то так:
C++
1
2
3
4
5
6
7
8
9
10
public:
        Card(char* varform)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            strcpy(var, varform);
        }
        char var[3];
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void l1_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card("l1");
             Rf->ShowDialog();
         }
private: System::Void l2_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card("l2");
             Rf->ShowDialog();
         }
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void Card_Load(System::Object^  sender, System::EventArgs^  e) 
             {
                 
                 if (!strcmp(var, "l1")
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Heal.png");
                     
                 if (!strcmp(var, "l2")
                     this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Cleansing-Light.png");
                     
             }
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 13:02  [ТС]     Switch. Почему не работает? VC++ Studio 2010 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private: System::Void Card_Load(System::Object^  sender, System::EventArgs^  e) 
             {
                 if (a1 = 1)
                 {
                    switch (b1)
                    {
                    case 1:
                        this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Heal.png");
                        break;
                    case 2:
                        this->CardBoxEng->Image = Image::FromFile("Cards\\BasicSet\\Spells\\Light\\Cleansing-Light.png");
                        break;
                    }
                 }
                 
             }
C++
1
2
3
4
5
6
7
8
9
10
11
12
public:
        
        Card(int a,int b)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            a = a1;
            b = b1;
        }
        int a1,b1;
C++
1
2
3
4
5
6
7
8
9
10
private: System::Void l1_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card(1,1);
             Rf->ShowDialog();
         }
private: System::Void l2_Click(System::Object^  sender, System::EventArgs^  e) 
         {
             Card^ Rf = gcnew Card(1,2);
             Rf->ShowDialog();
         }
Подскажите тогда плз. Тут то что не так?
Вроде должно работать, но почему то когда приравниваются a = a1 и b = b1 a и b были 1 и 1, а a1 b1 стали нулями. Смотрел по отладке и точкам остановки.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 13:05     Switch. Почему не работает? VC++ Studio 2010 #9
Наоборот нужно:
C++
1
2
a1 = a;
b1 = b;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 13:09     Switch. Почему не работает? VC++ Studio 2010
Еще ссылки по теме:

Почему Visual Studio показывает ошибку, но программа компилируется и работает? C++
C++ Почему в Visual studio 2010 работает,а в 6.0 не хочет,с++
Не работает Visual Studio 2010 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
UnrealFire
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 36
17.10.2013, 13:09  [ТС]     Switch. Почему не работает? VC++ Studio 2010 #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Наоборот нужно:
C++
1
2
a1 = a;
b1 = b;

упс.... что то со мной не так сегодня...
Yandex
Объявления
17.10.2013, 13:09     Switch. Почему не работает? VC++ Studio 2010
Ответ Создать тему
Опции темы

Текущее время: 19:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru