Помогите найти ошибку в Visual c++ 2010

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by TTO4ET, 29 Nov 2011.

  1. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3
    del...
     
    #1 TTO4ET, 29 Nov 2011
    Last edited: 5 Mar 2016
  2. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    1.создать ивент текстбох1_ченджет и тоже самое для тектбох2 отлавливать что введено в их. если оба тектбокса не равняются "" то баттнонх. енейбл=тру=)
    2. Тупой, но для тебя по легче=) проверять в таймере изменения в текстбоксах
     
  3. Feonor

    Feonor Elder - Старейшина

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    Простая логика:
    1 Ставишь по умолчанию Button1.Enabled = false;
    2 Отлавливаешь событие ввода в текстбокс и сравниваешь с пустой строкой String.Empty
    - пустая строка Button1.Enabled = false;
    - не пустая строка Button1.Enabled = true;
     
  4. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3
    del...
     
    #4 TTO4ET, 30 Nov 2011
    Last edited: 5 Mar 2016
  5. Feonor

    Feonor Elder - Старейшина

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    Логика логикой, отладка отладкой. =) Ты поставь точку останова на строку
    PHP:
    if ((textBox1->Text->Length == 0) || (textBox2->Text->Length == 0))
    и посмотри чему у тебя длинна ровна. И вообще срабатывает ли событие. Все станет ясно как день.
     
  6. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3
    del...
     
    #6 TTO4ET, 30 Nov 2011
    Last edited: 5 Mar 2016
  7. Feonor

    Feonor Elder - Старейшина

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    Читал я твой код, хоть и не удобно (вот кстати про неудобство, зайди в тему поддержи предложение по поводу тегов, может администрация внимание обратит наконец) Я не имел ввиду символ точка, я говорю про точку останова - бряк - в викепедии вот -
    Нужно же посмотреть выполняется код этот или нет. Теперь понял? Ты в VS 2010 пишешь или где?
     
  8. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3

    да 2010. Щас попробую сделать.

    поправил 1 пост, но не уверен будет ли так удобней читать.
     
    #8 TTO4ET, 30 Nov 2011
    Last edited: 30 Nov 2011
  9. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    ясен пень работать не будет ты только отлавливаешь одно событие а нужно два!
     
  10. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Code:
    \
    private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
    {
    label3->Text = ""; // очистить поле отображения
    if ((textBox1->Text->Length != 0) && (textBox2->Text->Length != 0))
    button1->Enabled = true;
    else
    button1->Enabled = false;	
    }
    
    private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e)
    {
    label3->Text = ""; // очистить поле отображения
    if ((textBox1->Text->Length != 0) && (textBox2->Text->Length != 0))
    button1->Enabled = true;
    else
    button1->Enabled = false;	
    }
    
    как то так. не проверял
     
  11. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3
    Можно по подробней почему 2 события? я ведь в одном указываю для 2 полей(textbox1 и textbox2). Или есть какие то особенности?

    у тебя 2 раза одна и та же функция. Поставил во втором случае TextChanged1. Но ничего не поменялось. Кнопка активна.
     
  12. tux

    tux Elder - Старейшина

    Joined:
    26 Mar 2009
    Messages:
    423
    Likes Received:
    231
    Reputations:
    67
    Я бы описал явным образом:
    if ((textBox1->Text->Length > 0) && (textBox2->Text->Length > 0))
    button1->Enabled = true;
    else
    button1->Enabled = false;
    К тому же, если в обработчике клацнуть enter, то поле визуально будет пустым, хотя символ там будет. Я бы обрабатывал не изменение ячейки, а выход из нее.
     
  13. Feonor

    Feonor Elder - Старейшина

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    ТС дело не в логике и исполнении. Твой код рабочий. Вот смотри. Накидал, потому что себе уже не верю) проверять стал. язык правда С# ну да ладно, события то те же:
    PHP:
    private void textBox1_TextChanged(object senderEventArgs e)
            {
                if (
    textBox1.Text.Length == 0)
                {
                    
    button1.Enabled false;

                }
                else
                    
    button1.Enabled true;
            }
    Все работает идеально. Так что либо скидывай свой проект сюда для анализа под микроскопом либо ищи сам. Дело не в логике, в самом проекте что то не так.
     
  14. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    Т.к. боксов 2, то лучше при нажатии на кнопку проверять наличие такста а не дёргать функцию при каждом изменении символа.
     
  15. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3
    https://rapidshare.com/files/1606665021/first.rar
    вот проект
     
  16. AXY

    AXY New Member

    Joined:
    15 Nov 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Вот немного добавил:
    1) при загрузке кнопка не активная (событие Load).
    2 и 3) событие на изменение текста в текстбоксе. если не пустые строки в обоих текстбоксах, то кнопка активна иначе неактивна.
    4) добавил событие KeyPress (textBox2_KeyPress) на второй тексбокс. почему-то на первом было, а на втором было сделано, но не добавлено.

    Вот изменения:

    private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
    {
    button1->Enabled = false;
    }
    private: System::Void textBox1_TextChanged_1(System::Object^ sender, System::EventArgs^ e)
    {
    if ((textBox1->Text->Length > 0) && (textBox2->Text->Length>0) )
    button1->Enabled = true;
    else
    button1->Enabled = false;
    }
    private: System::Void textBox2_TextChanged(System::Object^ sender, System::EventArgs^ e)
    {
    if ((textBox1->Text->Length > 0) && (textBox2->Text->Length>0) )
    button1->Enabled = true;
    else
    button1->Enabled = false;
    }

    Вот переделанный проект:
    ссылка на rghost.ru
    мой файл в папке релиз
     
  17. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3

    спасибо огромное... Теперь могу приступать к следующей программе )
     
    #17 TTO4ET, 1 Dec 2011
    Last edited: 1 Dec 2011
  18. AXY

    AXY New Member

    Joined:
    15 Nov 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    А подскажи где ты взял такую функцию? Из книги, форума или сам придумал?

    private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
    if ((e->KeyChar >= '0') && (e->KeyChar<= '9'))
    //цыфра
    return;
    //Правильный десятичный разделтель - запятая.
    // Заменим точку на запятую
    if (e->KeyChar == '.') e->KeyChar = ',';
    if (e->KeyChar==',')
    {
    //Нажата запятая.
    //Проверим, может быть, запятая уже есть в поле редактирования
    if ((textBox1->Text->IndexOf(',') != -1) ||
    (textBox1->Text->Length == 0))
    {
    //Запятая уже есть.
    //Запретить ввод ещё одной
    e->Handled = true;
    }
     
  19. TTO4ET

    TTO4ET New Member

    Joined:
    29 Nov 2009
    Messages:
    24
    Likes Received:
    2
    Reputations:
    -3
    из книги. я вообще чайник в программировании)
     
    2 people like this.