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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2009, 12:37   #1
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
Восклицание Помогите исправить ошибку

Всем доброго дня!

Помогите с ошибкой, если вводишь знак "минус" в поле 9 выскакивает ошибка: '-' is not valid floating point value'. Если закрыть это сообщение и ввести значение, потом все работает правильно, как убрать это сообщение. Нужно чтобы в Edit9 можно было ввести как положительные, так и отрицательные значения.

Кто знает как подправить этот код:

Код:
procedure TForm3.Edit9KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
If Edit9.Text = '' then
	     Edit10.Text := ''
    else

 begin
    If RadioGroup3.ItemIndex > 0 then
	    Edit10.Text := FloatToStr(StrToFloat(Edit9.Text) + 1)
    else
 	    Edit10.Text := FloatToStr(StrToFloat(Edit9.Text) + 0.5);
  end;
end;

Заранее большое спасибо.
KARUSHEV вне форума Ответить с цитированием
Старый 10.09.2009, 12:42   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Ты случайно не ставил у Edit9 возможность ввода только числовых значений?
Hollander вне форума Ответить с цитированием
Старый 10.09.2009, 12:43   #3
Crazy_Wolfy
Пользователь
 
Аватар для Crazy_Wolfy
 
Регистрация: 03.07.2008
Сообщений: 34
По умолчанию

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

Последний раз редактировалось Crazy_Wolfy; 10.09.2009 в 12:45.
Crazy_Wolfy вне форума Ответить с цитированием
Старый 10.09.2009, 12:46   #4
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

В процедуре KeyPress такой код:


Код:
procedure TForm3.Edit9KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9':;
'-':;
',','.':
begin
Key := DecimalSeparator;
if Pos(DecimalSeparator,Edit9.Text) <> 0
then Key := Char(0);
end;
#8      :;
#13     : Edit12.SetFocus;
else Key :=Chr(0);
end;
KARUSHEV вне форума Ответить с цитированием
Старый 10.09.2009, 12:48   #5
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Crazy_Wolfy, не подскажешь как написать такое условие?
KARUSHEV вне форума Ответить с цитированием
Старый 10.09.2009, 12:49   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
KARUSHEV
Вместо StrToFloat примени StrToFloatDEF которая возвращает число определенное тобой во втором параметре если нельзя строку в число перевести или TryStrToFloat.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2009, 12:49   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
KARUSHEV
Вместо StrToFloat примени StrToFloatDEF которая возвращает число определенное тобой во втором параметре если нельзя строку в число перевести или TryStrToFloat.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2009, 12:56   #8
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Stilet, напиши пожалуйста всю строчку, а то у меня вылетает ошибка


Код:
Edit10.Text := FloatToStr(TryStrToFloat(Edit9.Text) + 0.5);
KARUSHEV вне форума Ответить с цитированием
Старый 10.09.2009, 12:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуйста:
Код:
Edit10.Text := FloatToStr(StrToFloatDEF(Edit9.Text,0) + 0.5);
или
Код:
var ou:double;
...
if TryStrToFloat(Edit9.Text,ou) then
 Edit10.Text := FloatToStr(ou+0.5);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2009, 13:01   #10
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Спасибо! Все работает
KARUSHEV вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите исправить ошибку Deniska112 Помощь студентам 4 25.06.2009 12:15
Помогите исправить ошибку Ortega Общие вопросы C/C++ 6 04.06.2009 22:39
помогите исправить ошибку. RUSLAN13 Помощь студентам 1 25.12.2008 17:22
Помогите исправить ошибку Булат Общие вопросы Delphi 3 25.04.2008 10:01
помогите исправить ошибку. alen666 Паскаль, Turbo Pascal, PascalABC.NET 11 08.03.2008 16:43