![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Цитата:
Код:
if (Edit1.Text = '') or (Edit1.Text = '0') then Abort; Google в помощь |
Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#4
|
||||
|
||||
![]() Код:
try .... except end; Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#5
|
|||
|
|||
![]() Цитата:
Цитата:
Цитата:
Может у кого есть отлаженный код, рабочий, так сказать для анализа. |
#6
|
||||
|
||||
![]() Цитата:
Stop on Delphi Exception отключать надо Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 28.04.2012 в 13:21. |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#7
|
|||
|
|||
![]() Цитата:
А теперь понял ошибку и исправился!. Вот так должно быть? Код:
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. |
#8
|
||||
|
||||
![]() Цитата:
Для окончательного понимания: Программа пытается выполнить, то что находиться в блок try. Если возникает любая ошибка, то программа незамедлительно переходит в блок except. То есть если возникнет ошибка во время дебага программы (запуска с делфи), то вы увидите сообщение об ошибке, нажмете F9 и программа пойдет выполняться дальше. Если же вы запустите exe'шник, то никаких предупреждение на экран не вылезет. Google в помощь |
Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
Ogurcofff (28.04.2012)
|
#9
|
|||
|
|||
![]() Цитата:
Спасибо за терпение и понимание!!! |
#10
|
||||
|
||||
![]() Цитата:
Цитата:
Пишу программы за еду. __________________ |
#11
|
||||
|
||||
![]() Если версия Дельфи не позволяет яно указать, что 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 в.д. |
#12
|
|||
|
|||
![]() Цитата:
|
#13
|
||||
|
||||
![]() Пустой строки уже быть не может
![]() ![]() Всего лишь показал, как штатными средствами создать Edit, понимающий только цифры. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#14
|
||||
|
||||
![]() Вот реально как дети - чес-слово...
Думать мозгом не пробовали (это к ТС)? У меня тож есть пользовательские интерфейсы (полная жо..), но суть не в этом. Я умею "гасить" любые действия пользователя, однако это не главное. Ну "вставили" в поле ввода (Edit) что-то отличное от цифр, и что... все умерло??? Можно рассмотреть поле, получить ошибку, сказать юзверу и... ну там по желанию (я ставлю значение по умолчанию). Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#15
|
|||
|
|||
![]() или updown прицепить, у него min, max, position есть
|