![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() В процессе "написания" программы возникает целая куча вопросов. И мне как начинающему любителю не решить их своими силами.
Так вот моя простенькая программка производит некоторые вычисления, но иногда возникают исключительные ситуации, такие как деление на 0 или значение из пустого edit-а попадает в знаменатель дроби, что тоже, наверное расценивается как деление на 0. Какие предлагают решения: Код:
try .... except ... end; Я же "планирую" чтобы все расчеты происходили при событии OnChange в Edit. И мне эти сообщения не нужны. Вопрос, возможно ли обрабатывать эти исключения без вывода всяких сообщений, чтобы пустой Edit не выдавал ошибку is not a valid floating point value. И в случае деления на ноль просто не происходили никакие вычисления и все. Надеюсь понятно расписал. Задавайте наводящие вопросы |
#2
|
||||
|
||||
![]() Код:
TryStrToInt(Edit1.Text, <переменная куда вывести результат>); Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#3
|
|||
|
|||
![]() Цитата:
Цитата:
Цитата:
Может у кого есть отлаженный код, рабочий, так сказать для анализа. |
#4
|
||||
|
||||
![]() Цитата:
Stop on Delphi Exception отключать надо Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 28.04.2012 в 13:21. |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#5
|
|||
|
|||
![]() Цитата:
А теперь понял ошибку и исправился!. Вот так должно быть? Код:
procedure TRIP.Edit1Change(Sender: TObject); begin try a:=StrToFloat(edit1.Text); b:=strtofloat(edit2.Text); c:=StrToFloat(edit3.Text); d:=strtofloat(edit4.Text); e:=strtofloat(edit5.Text); F:=b+((e-a)/(c-a)*(d-b)); edit6.Text:=floattostr(f); except end; end; Последний раз редактировалось Ogurcofff, 28.04.2012 в 14:12. |
#6
|
||||
|
||||
![]() Цитата:
Для окончательного понимания: Программа пытается выполнить, то что находиться в блок try. Если возникает любая ошибка, то программа незамедлительно переходит в блок except. То есть если возникнет ошибка во время дебага программы (запуска с делфи), то вы увидите сообщение об ошибке, нажмете F9 и программа пойдет выполняться дальше. Если же вы запустите exe'шник, то никаких предупреждение на экран не вылезет. Google в помощь |
Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#7
|
||||
|
||||
![]() Цитата:
Цитата:
Пишу программы за еду. __________________ |
#8
|
||||
|
||||
![]() Если версия Дельфи не позволяет яно указать, что Edit может воспринимато только цифры, то имеется обходной путь:
Код:
procedure TForm1FormCreate(Sender: TObject); var I : Integer; begin // Устанавливаем для всех Edit-ов только цифры, // в старших версиях дельфи имеется в свойствах контрола. for I := 0 to ComponentCount - 1 do if (Components[i] is TEdit) then with (Components[i] as TEdit) do SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) or ES_NUMBER); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
||||
|
||||
![]() Цитата:
Код:
if (Edit1.Text = '') or (Edit1.Text = '0') then Abort; Google в помощь |
Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#10
|
||||
|
||||
![]() Код:
try .... except end; Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|