![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Guest_bobah |
|
|||
|
Unregistered |
У меня в программе из компонента Tedit считывается строка и её нужно преобразовать с учётом знака. При этом неизвестно, число там введено или нет. Стандартный Floattostr выдает ошибку EConvertError, если введено не число, и эту ошибку я никак не могу перехватить. Мучаюсь долго. Ничего не выходит. Может есть обходные пути?
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Используй лучше контрол TRxCalcEdit из RXLib, таких вопросов возникать не будет.
а вообще ошибки перехватываются try ... except ... end; -------------------- |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if Key=',' then Key:='.'; if (pos('.', Edit1.Text)<> 0) and (key='.') then key:=#0; if not(Key in ['0'..'9', '+', '-']) and not (Key=#8)and not (Key='.') then begin key:=#0; beep; end; end; -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Guest_bobah |
|
|||
|
Unregistered |
Но если писать
try..except..end; то отладчик всё равно останавливает программу при ошибке. У меня - по ошибке EConvertError. Прикол всей этой строки в TEdit - не в точке или запятой, а в том, что туда некоторые тупые юзеры пишут не число, а буквы. Кстати, если код просто откомпилировать и запустить без отладчика, то try..except..end; прекрасно работает! И при любых нарушениях в строке! |
|||
|
||||
| cpu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
я сменил ник (с guest_bobah на cpu). зарегестрировался.
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Да, действительно, потрясающее открытие..... -------------------- |
|||
|
||||
| Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Убери в опциях дебаггера соответстующую опцию.
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
| cpu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Можно поконкретней, please? (пишу проги а опций дебаггера не знаю - позорррррр! |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Меню->Tools->Debugger Options->Language Exceptions
Uncheck: Stop On Delphi Exceptions -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| cpu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Спасибо!!!
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Только не советую тебе это делать...
-------------------- |
|||
|
||||
| cpu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
А что? |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Говоря простым языком - эта фитча очень здорово облегчает процесс отладки и тестирования кода.
Если жы Вы поставили программно обработку ошибок, и очень хочеться посмотреть как они (ошибки) обрабатываются, то просто запустите скомпилированный exe-шик из проводника, командной строки и т.д. Ну а в Вашей ситуации саммым корректым выходом было бы (по привилам хорошего стиля) сделать так, как посоветывал alex-co. -------------------- |
|||
|
||||
| Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
ИМХО она очень осложняет, а не облегчает.
Если Вам она облегчает значит Вы не привыкли пользоваться современными способами обработки ошибок, например, try .. except .. end Конечно на момент отладки это полезно, но когда кусок кода будет отлажен, работа с ним будет невозможна т.к. IDE всё время будет вылетать по exception'у на этом участке кода. -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Пользуюсь, и очень часто, поэтому и придерживаюсь такого мнения.
Причем правильно пользуюсь этим. Просто я предпочитаю писать код таким образом, чтобы у мне не приходилось обрабатывать такого рода ошибки, которые могут возникать в любом случае. Т.е. иначе говоря, если рассматривать вопрос, который прозвучал в этом топике, то поставленную задачу можно решить двумя способами. 1) try..except...end; 2) через OnKeyPress. В первом случае может возникнуть исключительная ситуация, во втором - это не допускается. ИМХО второй вариант больше соответствует хорошему стилю программирования. Этого я и придерживаюсь, причем во всем. -------------------- |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |