Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование StrToFloat, Нужно перехватить ошибку 
:(
    Опции темы
Guest_bobah
  Дата 26.2.2003, 03:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня в программе из компонента Tedit считывается строка и её нужно преобразовать с учётом знака. При этом неизвестно, число там введено или нет. Стандартный Floattostr выдает ошибку EConvertError, если введено не число, и эту ошибку я никак не могу перехватить. Мучаюсь долго. Ничего не выходит. Может есть обходные пути?
  Вверх
Medved
Дата 26.2.2003, 03:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Используй лучше контрол TRxCalcEdit из RXLib, таких вопросов возникать не будет.
а вообще ошибки перехватываются
try
...
except
...
end;


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Alex
Дата 26.2.2003, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 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;


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Guest_bobah
Дата 27.2.2003, 06:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Но если писать
try..except..end;
то отладчик всё равно останавливает программу при ошибке. У меня - по ошибке EConvertError.
Прикол всей этой строки в TEdit - не в точке или запятой, а в том, что туда некоторые тупые юзеры пишут не число, а буквы. Кстати, если код просто откомпилировать и запустить без отладчика, то
try..except..end;
прекрасно работает! И при любых нарушениях в строке!
  Вверх
cpu
Дата 27.2.2003, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 27.2.2003

Репутация: нет
Всего: нет



я сменил ник (с guest_bobah на cpu). зарегестрировался.
PM MAIL WWW ICQ   Вверх
Medved
Дата 27.2.2003, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата(Guest_bobah @ 27.2.2003, 09:16)
Но если писать
try..except..end;
то отладчик всё равно останавливает программу при ошибке. У меня - по ошибке EConvertError.
Прикол всей этой строки в TEdit - не в точке или запятой, а в том, что туда некоторые тупые юзеры пишут не число, а буквы. Кстати, если код просто откомпилировать и запустить без отладчика, то
try..except..end;
прекрасно работает! И при любых нарушениях в строке!

Да, действительно, потрясающее открытие.....


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Song
Дата 28.2.2003, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Убери в опциях дебаггера соответстующую опцию.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
cpu
  Дата 1.3.2003, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 27.2.2003

Репутация: нет
Всего: нет



Цитата(Song @ 27.2.2003, 21:25)
Убери в опциях дебаггера соответстующую опцию.

Можно поконкретней, please? (пишу проги а опций дебаггера не знаю - позорррррр! butbut.gif )
PM MAIL WWW ICQ   Вверх
Vit
Дата 1.3.2003, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
cpu
Дата 2.3.2003, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 27.2.2003

Репутация: нет
Всего: нет



Спасибо!!!
PM MAIL WWW ICQ   Вверх
Medved
Дата 2.3.2003, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Только не советую тебе это делать...


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
cpu
Дата 4.3.2003, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 27.2.2003

Репутация: нет
Всего: нет



Цитата(Pegas @ 2.3.2003, 14:33)
Только не советую тебе это делать...

А что?
PM MAIL WWW ICQ   Вверх
Medved
Дата 5.3.2003, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Говоря простым языком - эта фитча очень здорово облегчает процесс отладки и тестирования кода.
Если жы Вы поставили программно обработку ошибок, и очень хочеться посмотреть как они (ошибки) обрабатываются, то просто запустите скомпилированный exe-шик из проводника, командной строки и т.д.
Ну а в Вашей ситуации саммым корректым выходом было бы (по привилам хорошего стиля) сделать так, как посоветывал alex-co.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Song
Дата 5.3.2003, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



ИМХО она очень осложняет, а не облегчает.
Если Вам она облегчает значит Вы не привыкли пользоваться современными способами обработки ошибок, например, try .. except .. end
Конечно на момент отладки это полезно, но когда кусок кода будет отлажен, работа с ним будет невозможна т.к. IDE всё время будет вылетать по exception'у на этом участке кода.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Medved
Дата 5.3.2003, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Пользуюсь, и очень часто, поэтому и придерживаюсь такого мнения.
Причем правильно пользуюсь этим.

Просто я предпочитаю писать код таким образом, чтобы у мне не приходилось обрабатывать такого рода ошибки, которые могут возникать в любом случае.

Т.е. иначе говоря, если рассматривать вопрос, который прозвучал в этом топике, то поставленную задачу можно решить двумя способами.

1) try..except...end;
2) через OnKeyPress.

В первом случае может возникнуть исключительная ситуация, во втором - это не допускается.

ИМХО второй вариант больше соответствует хорошему стилю программирования. Этого я и придерживаюсь, причем во всем.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0933 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.