|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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 |
Сама себе режиссер
Старожил
Регистрация: 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 ...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
15.06.2007, 20:13 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
try... except... если прогу из делфи запускаешь, то не срабатывает. Вероятно как-то можно настроить делфи, но лично я просто exe запускаю из проводника
|
15.06.2007, 20:52 | #4 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
В главном меню Tools->Debugger Options->снять флажок Integreted Debugging. Тогда работает
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
15.06.2007, 21:00 | #5 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Когда программа запускается "из Дельфи", то по умолчанию большинство исключений перехватывает и обрабатывает встроенный отладчик (т.к. программа фактически запускается из-под него). Можно запускать прогармму отдельно или зайти в меню "Tools | Debuger Options...", там, внизу окна есть опция "Integrated debugging", если ее снять, то программа будет запускаться "сама по себе" и сможет обрабатывать исключения.
P.S. Не заметилось предыдущее сообщение. Видать, это долго писалось... |
16.06.2007, 07:30 | #6 |
Пользователь
Регистрация: 15.06.2007
Сообщений: 40
|
спасибо все работает!
|