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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 17:07   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
Радость Выводится повторное исключение после моего стандартного.

Здравствуйте программисты! Не подскажите, что где нужно прописать программе С++ Билдер, или убрать может быть галочку какую-то в разделе Tool->Debuger Options->Language Exception чтоб не выводилось окно исключения на англ языке, после моего исключения. Тоесть например, я ввёл
Код:
 if ((Edit1->Text).Length() == 0)

MessageDlg("Введите значение в 1-ое поле",mtWarning,TMsgDlgButtons() <<mbOK,0);
Чтоб после этого исключения, при нажатии "ок" не выводилось повторно англ. непонятное исключение: "Is not valid floating point value, начало просто надоедать. Заранне благодарен за ответ.

Вот код все моей программы. Когда я ничего не ввожу в первое поле Edit1, выдаёт моё исключение, после него, опять англ.исключение.

Код:
float a,b,c;



//Проверяем на ввод данные

if ((Edit1->Text).Length() == 0)

MessageDlg("Введите значение в 1-ое поле",mtWarning,TMsgDlgButtons() <<mbOK,0);
else
if ((Edit2->Text).Length() == 0)
MessageDlg("Введите значение в 2-ое поле",mtWarning,TMsgDlgButtons() <<mbOK,0);


//Получаем данные из полей ввода

a = StrToFloat(Edit1->Text);
b = StrToFloat(Edit2->Text);

//Вычисляем :
try
{
c = a/b;
Label1->Caption = "Ответ = " + FloatToStrF(c,ffGeneral,7,2);
}
catch(EZeroDivide&p)
{
MessageDlg("Деление на ноль",mtInformation,TMsgDlgButtons() <<mbOK,0);
}
}

Последний раз редактировалось prikolist; 25.03.2009 в 17:35.
prikolist вне форума Ответить с цитированием
Старый 25.03.2009, 23:44   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Возможно вместо
Код:
if ((Edit1->Text).Length() == 0)
стоит использовать механизм обработки исключений (какое исключение должно генерироваться - не знаю, ищите в документации по билдеру)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 25.03.2009, 23:54   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Blade +1

to prikolist, сообщение-то вы выводите, но дальше никак не препятствуете попытке преобразования "ничего" в число.

Тогда уж как-нибудь так:
Код:
if ((Edit1->Text).Length() == 0)
 {
 MessageDlg("Введите значение в 1-ое поле",mtWarning,TMsgDlgButtons() <<mbOK,0);
 return;
 }
else
if ((Edit2->Text).Length() == 0)
 {
 MessageDlg("Введите значение в 2-ое поле",mtWarning,TMsgDlgButtons() <<mbOK,0);
 return;
 }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.03.2009, 13:04   #4
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Да, действительно, нужно было взять в фигурный скобки, и ещё прописать return, после этого повторное диалоговое окно не вылазит, только не знаю почему.
prikolist вне форума Ответить с цитированием
Старый 26.03.2009, 13:35   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Да, действительно, нужно было взять в фигурный скобки, и ещё прописать return, после этого повторное диалоговое окно не вылазит, только не знаю почему.
Потому что функция завершается сразу после показа диалогового окна. И до функции преобразования дело не доходит.

Я бы вам посоветовал почитать про return, раз уж мое объяснение вам не подошло.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
повторное нажатие кнопки blackstersl Общие вопросы Delphi 2 17.09.2008 14:53
Проверка на повторное открытие ЯИмя Microsoft Office Excel 4 13.08.2008 18:02
Замена стандартного Shell'а своим Arigato Win Api 3 02.08.2008 15:53
Нахождение Стандартного отклонения enigma Microsoft Office Excel 1 06.02.2008 16:12