Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2008, 18:05   #1
CBeginner
Новичок
Джуниор
 
Регистрация: 20.06.2008
Сообщений: 2
По умолчанию try ... catch

Всем доброго времени суток,

Помогите пожалуйста, простенькая программа в С++ Builder 6.

* Состав:

1 х Form,
2 х LabeledEdit,
2 х Button (Ok, Cancel).

Хотел, что бы при вводе данных, на любом из LabeledEdit, шла автоматическая проверка, в данной ситуации на принадлежность numeric type, т.е. ввожу цифры, запятые или точки - неважно, как только ввёл две запятые или букву, т.е. теперь значение не numeric, содержимое окрашивается в красный цвет, если всё нормально, тогда опять в чёрный.

* Реализация:

Решил, значит, применить StrToFloat в OnChange событии одного из LabeledEdit; когда вводится не numeric, генерится exception, я его ловлю и окрашиваю содержимое в красный цвет, если же, всё нормально окрашиваю в стандартный.

* Проблема:

Создал блок try{}catch(Exception&){}, запустил, не работает; Exception, как и положено, генерится, а вот не перехватывается, почему-то. Ниже фрагмент:

Код:
//-------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uExceptionTest.h"
//-------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
//-------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//-------------------------------------------------------------------------
void __fastcall TForm1::LabeledEdit1KeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
  float val;
  try
  {
    val=StrToFloat(LabeledEdit1->Text);
    LabeledEdit1->Color=clBlack;
  }
  catch(EConvertError&)
  {
    LabeledEdit1->Color=clRed;
  }
}
//-------------------------------------------------------------------------
Кто-нибудь сталкивался с подобной проблемой, ну или смог бы помочь разобраться с try ... catch, почему он не работает?

С уважением,

Модератор: Читаем правила, юзаем тег <CODE>

Последний раз редактировалось merax; 20.06.2008 в 21:27.
CBeginner вне форума Ответить с цитированием
Старый 20.06.2008, 21:25   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Удали обработку исключительных ситуаций из функции WinMain файла проекта (не модуля окна, а именно файла проекта project_name.cpp), должно помочь
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 20.06.2008, 21:25   #3
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Код:
void __fastcall TForm1::Label1Click(TObject *Sender)
{
    float val;

    try
    {   throw 1;
        val = StrToFloat(Label1->Caption);
        Label1->Color=clBlack;
    }
    catch(int Ex)
    {
        Label1->Color=clRed;
    }
}
Пы.Сы. Tools -> Debugger Options -> Language Exceptions. Cними все галочки....

Пы.Пы.Сы. И вообще книги почитай. И код по-человечески оформи !!!
merax вне форума Ответить с цитированием
Старый 23.06.2008, 07:12   #4
CBeginner
Новичок
Джуниор
 
Регистрация: 20.06.2008
Сообщений: 2
По умолчанию try ... catch

Спасибо люди, добрые, наверное, мне стоит действительно книжки хорошие почитать, а то одни нехорошие попадаются, что вроде всё ок, а когда начинаешь компилировать, совсем не ок.

Greblin, проблема всё равно остаётся, в общем, как заметил добрый человек - merax, проблема с дебаггер опшнс, запустил exe-шник, всё нормально.
___________________________________ ______________________________

A thunder does not hit the lowest, but the highest
CBeginner вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает вложенный catch jorjik Общие вопросы C/C++ 5 13.07.2008 22:37
try... catch Kocapb Общие вопросы C/C++ 6 19.12.2007 04:30