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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2007, 19:16   #1
Димарик
Пользователь
 
Аватар для Димарик
 
Регистрация: 15.06.2007
Сообщений: 40
По умолчанию try .... except

Приведствую всех программистов этого форума.
- несудите строго, все когда то начинали.

procedure TForm1.Button1Click(Sender: TObject);
begin
try
a:= StrToFloat(Edit1.Text);
b:= StrToFloat(Edit2.Text);
c:= StrToFloat(Edit3.Text);
begin
d:=b*b-4*a*c;
if (a<>0) and (d>0) then
x1:=(b*(-1))+(sqrt(d)/(2*a));
x2:=(b*(-1))-(sqrt(d)/(2*a));
Label1.Caption:='D= '+FloatToStr(d);
Label1.Caption:=FloatToStr(x1);
Label1.Caption:=FloatToStr(x2);
end;
except
on E: EConvertError do MessageDlg('Ïîâòîðèòå ââîä äàííûõ',mtError, [mbOk], 0);
else
.....

конечно тут много ошибок.
но меня больше всего валнует:
1: невыполняеться Try except, например при делении на ноль.
2: и формулы почему то неправльно считают.
Димарик вне форума Ответить с цитированием
Старый 15.06.2007, 19:40   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

А чего это ты все в один Label пихаешь? Насчет того, что формулы неправильно считают - ты скобки не так расставил. И проверка деления на ноль будет on E: EZeroDivide do MessageDlg('Деление на 0',mtError, [mbOk], 0);
Держи:

begin
try
a:= StrToFloat(Edit1.Text);
b:= StrToFloat(Edit2.Text);
c:= StrToFloat(Edit3.Text);
begin
d:=b*b-4*a*c;
if (a<>0) and (d>0) then
x1:=((b*(-1))+(sqrt(d)))/(2*a);
x2:=((b*(-1))-(sqrt(d)))/(2*a);
Label1.Caption:='D= '+FloatToStr(d);
Label2.Caption:=FloatToStr(x1);
Label3.Caption:=FloatToStr(x2);
end;
except
on E: EConvertError do MessageDlg('Введите число!',mtError, [mbOk], 0);
on E: EZeroDivide do MessageDlg('Деление на 0',mtError, [mbOk], 0);
else
...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 15.06.2007, 20:13   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

try... except... если прогу из делфи запускаешь, то не срабатывает. Вероятно как-то можно настроить делфи, но лично я просто exe запускаю из проводника
pu4koff вне форума Ответить с цитированием
Старый 15.06.2007, 20:52   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

В главном меню Tools->Debugger Options->снять флажок Integreted Debugging. Тогда работает
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 15.06.2007, 21:00   #5
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от Димарик Посмотреть сообщение
невыполняеться Try except, например при делении на ноль
Когда программа запускается "из Дельфи", то по умолчанию большинство исключений перехватывает и обрабатывает встроенный отладчик (т.к. программа фактически запускается из-под него). Можно запускать прогармму отдельно или зайти в меню "Tools | Debuger Options...", там, внизу окна есть опция "Integrated debugging", если ее снять, то программа будет запускаться "сама по себе" и сможет обрабатывать исключения.

P.S. Не заметилось предыдущее сообщение. Видать, это долго писалось...
Jeni вне форума Ответить с цитированием
Старый 16.06.2007, 07:30   #6
Димарик
Пользователь
 
Аватар для Димарик
 
Регистрация: 15.06.2007
Сообщений: 40
По умолчанию

спасибо все работает!
Димарик вне форума Ответить с цитированием
Ответ


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