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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2008, 19:44   #1
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
Печаль Перехватить сообщение об ошибке

Проблема такая. При вычислении формул, например: b:=Exp(3*(Ln(cos(y)))); при некоторых значениях переменных, например y=2, выскакивает сообщение об ошибке:
'Project Project1.exe raised exception class EInvalidOP with message 'Invalid floating point operator'. Я не могу понять почему, но мне необходимо перехватить это сообщение и вместо него вывести Showmessage('Попробуйте ввести другие значения'). Как это сделать?
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"
Insainer вне форума Ответить с цитированием
Старый 25.04.2008, 19:46   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Код:
TRY
//код
EXCEPT
//если ошибка
END.
Код:
TRY
//код
FINALLY
//выполнить при любых условиях
END.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 25.04.2008, 20:00   #3
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
Печаль

Спасибо, уже понятнее, но не совсем. Что описывать в блоке EXCEPT, чтобы предотвратить появления сообщения?
Если так:
Код:
on EMathError do showmessage('...');
, то сообщение выводится после остановки выполнения программы. Как поймать именно ошибку с 'floating operator'?
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"

Последний раз редактировалось Insainer; 25.04.2008 в 20:08.
Insainer вне форума Ответить с цитированием
Старый 25.04.2008, 20:12   #4
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Код:
TRY  
b:=Exp(3*(Ln(cos(y))));
EXCEPT  
Showmessage('Попробуйте ввести другие значения').
END.
Вот так сделай.
Да и запусти не с помощью delphi а просто ехе файл, увидишь что ошибок нет.
Всё гениальное - просто!

Последний раз редактировалось Air; 25.04.2008 в 20:17.
Air вне форума Ответить с цитированием
Старый 25.04.2008, 20:18   #5
Insainer
Пользователь
 
Аватар для Insainer
 
Регистрация: 27.01.2008
Сообщений: 51
Радость

Точно, спасибо большое, а я в дебри полез.
Да, раз уж в теме, из-за чего вылезает ошибка 'Invalid floating point operator' при расчете формул? Вроде должно нормально считаться.?
"Программисты - это люди, которые решают методами, которые вы не понимаете проблемы, о которых даже не подозревали"

Последний раз редактировалось Insainer; 25.04.2008 в 20:23.
Insainer вне форума Ответить с цитированием
Старый 25.04.2008, 20:39   #6
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

"Инвалид поплававший оператор точки", т.ё. не верный оператор плавающей точки.
его вызывает либо Exp, либо Ln
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщение об ошибке:Cannot perfom this operation on a closed dataset! Tanuska___:) БД в Delphi 1 04.08.2008 17:52
Выдать сообщение об ошибке Detka Общие вопросы Delphi 17 10.07.2008 15:06
Как убрать сообщение об ошибке? AngelOfDeath Работа с сетью в Delphi 2 01.05.2008 11:44
Звук об ошибке как вырубить) Kukkk Общие вопросы Delphi 3 17.02.2008 21:41
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе rpy3uH Win Api 2 02.12.2006 12:12