30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
1

is not floating point value

07.02.2013, 18:25. Показов 1377. Ответов 18
Метки нет (Все метки)

делаю калькулятор, хочу, чтобы в Edit1 выводились все мои действия в таком формате: "1+2", затем результат после нажатия на "=". Но выдает ошибку "is not floating point value" на любом примере. вот такую процедуру использую
Delphi
1
2
3
4
5
6
procedure TCalculator.btnMultiplyClick(Sender: TObject);
begin
 a:=StrToFloat(Edit1.Text);
 Edit1.Text:=Edit1.Text+'*';
 e:='*';
end;
ошибка выскакивает, когда добавляю Edit1.Text+'*'; если делать там пустое поле, то есть Edit1.Text:=''; все нормально. но хочется же чтобы выводило все мои действия.
и подскажите заодно, что нужно сделать, чтобы программа реагировала не только на 2 действия, а еще и на третье. то есть если я ввожу 2+3+4 было не 7, а 9.
Вложения
Тип файла: zip kalkulator.zip (856 байт, 4 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2013, 18:25
Ответы с готовыми решениями:

Floating point value
вот часть кода begin html:=IdHTTP1.Get('http://m.rate.mail.ru/'); Delete(html,1,pos('<a...

Floating point overflow
Здравствуйте! Задание состоит в том, чтобы вычислить значение суммы следующего ряда с требуемой...

..is not a valid floating point value..
Вот кусочек моего задания, на котором я немного "заглох". • При нажатии кнопки «Ввести»,...

Floating point overflow
Очень долго возился с этим заданием.Еле-еле понял как делать.Теперь выдает ошибку "Floating point...

18
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
07.02.2013, 18:53 2
ошибка выскакивает в рабочей программе? или при компиляции?
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
07.02.2013, 18:55  [ТС] 3
Цитата Сообщение от Fenix_dragon Посмотреть сообщение
ошибка выскакивает в рабочей программе? или при компиляции?
в рабочей.
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
07.02.2013, 18:58 4
как ты думаеш что выполняет эта функция:
StrToFloat
?

Добавлено через 35 секунд
а заодно и преобразуй эту строку в число-

10*
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32151 / 20820 / 8071
Регистрация: 22.10.2011
Сообщений: 36,046
Записей в блоге: 7
07.02.2013, 19:07 5
gylayko, Правила Форума, 4.12:
Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах.
Зачем файл размером в 3 Кб присоединять на стороннем хостинге, если форум позволяет присоединить до 10 Мб?
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
07.02.2013, 19:16  [ТС] 6
Цитата Сообщение от Fenix_dragon Посмотреть сообщение
как ты думаеш что выполняет эта функция:
StrToFloat
?
так строка a:=StrToFloat(Edit1.Text); как-то влияет на Edit? я просто беру из него число и все, а в самом то Editе я ничего не делаю.

Цитата Сообщение от Fenix_dragon Посмотреть сообщение
Добавлено через 35 секунд
а заодно и преобразуй эту строку в число-

10*
какую вы имеете ввиду?

Добавлено через 26 секунд
Цитата Сообщение от UI Посмотреть сообщение
gylayko, Правила Форума, 4.12: Зачем файл размером в 3 Кб присоединять на стороннем хостинге, если форум позволяет присоединить до 10 Мб?
"недопустимый формат" писало.
0
Пишу на Delphi...иногда
1421 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
07.02.2013, 19:24 7
еще бы файл формы в проект посмотреть, а то очень лениво все кнопки раскидывать и переобзывать
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
07.02.2013, 19:29 8
Цитата Сообщение от gylayko Посмотреть сообщение
так строка a:=StrToFloat(Edit1.Text); как-то влияет на Edit? я просто беру из него число и все, а в самом то Editе я ничего не делаю.
в том то и дело, что ты (надеюсь можно?) из Edit хочеш брать число.
но функция StrToFloat(s) преобразует строку s в число. В твоём случае строка в поле Edit будет преобразована в число. Грубо говоря строка '10' это два символа: символ '1' и символ '0'. Этой строке отвечает числовое значение 10.

а ты же хочеш преобразовать строку '10*'. которая числового значения не имеет

Добавлено через 2 минуты
Delphi
1
2
3
  Edit1.Text = 10;
  Edit1.Text:= Edit1.Text + '*';
  Edit1.Text = 10*
1
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
08.02.2013, 11:36  [ТС] 9
все, с этой ошибкой я разобрался. спасибо.
добавил Label и в него вывожу результат.
Delphi
1
2
3
4
5
6
7
procedure TForm1.btnMultiplyClick(Sender: TObject);
begin
a:=StrToFloat(Edit1.Text);
Label1.Caption:=FloatToStr(a)+'*';
Edit1.Text:='';
e:='*';
end;
а когда равно, то тоже добавил вывод в Label
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.btnRavnoClick(Sender: TObject);
begin
b:=StrToFloat(Edit1.Text);
Label1.Caption:=Label1.Caption+FloatToStr(b);
 case e of
  '+':d:=a+b;
  '-':d:=a-b;
  '*':d:=a*b;
  '/':d:=a/b;
 end;
Edit1.Text:=FloatToStr(d);
Label1.Caption:=Label1.Caption+'=';
end;
подскажите теперь, как сделать, чтобы можно было выполнять и третье действие! в приложении весь проект калькулятор.rar
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
08.02.2013, 11:44  [ТС] 10
Цитата Сообщение от cotseec Посмотреть сообщение
еще бы файл формы в проект посмотреть, а то очень лениво все кнопки раскидывать и переобзывать
добавил. буду благодарен за помощь!
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
08.02.2013, 11:52 11
Цитата Сообщение от gylayko Посмотреть сообщение
подскажите теперь, как сделать, чтобы можно было выполнять и третье действие!
Вложение 233047
либо учись работать со строками, либо вводи тучу переменных и проверяй, при введении очереного знака (+, -, *, /), выполнял ли ты раньше какието вычисления.
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
08.02.2013, 12:17  [ТС] 12
Цитата Сообщение от Fenix_dragon Посмотреть сообщение
либо учись работать со строками, либо вводи тучу переменных и проверяй, при введении очереного знака (+, -, *, /), выполнял ли ты раньше какието вычисления.
а можно более подробно о переменных?
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
08.02.2013, 12:32 13
gylayko, у тебя несколько глобальных переменных (a, b, e, h) (правда не пойму зачем тебе столько!)
в 'a' и 'b' ты записываеш свои 2 числа.
в 'e' - знак.

если повторное нажатие на кнопку знака должно проводить вычисление с РЕЗУЛЬТАТОМ предыдущего вычисления, то просто присваиваеш значению 'a' результат. И работаеш дальше как работал.

Добавлено через 6 минут
если же ты хочеш ввести сразу несколько действий:

1 + 1 + 2
1 + 2 * 3
то при нажатии кноки "знака" заносиш каждое слежующее число в следующую переменную (если "а" чтото содержит, присвоит "b" число)

тоже делаеш и со знаками (заносиш слежующий "знак" в следующую переменную)

а дальше выполняеш действия в порядке очереди
1
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
08.02.2013, 12:47  [ТС] 14
Цитата Сообщение от Fenix_dragon Посмотреть сообщение
gylayko, у тебя несколько глобальных переменных (a, b, e, h) (правда не пойму зачем тебе столько!)
в 'a' и 'b' ты записываеш свои 2 числа.
в 'e' - знак.

если повторное нажатие на кнопку знака должно проводить вычисление с РЕЗУЛЬТАТОМ предыдущего вычисления, то просто присваиваеш значению 'a' результат. И работаеш дальше как работал.
то есть как-то так?
Delphi
1
2
3
  if a=0 then
    a:=StrToFloat(Edit1.Text)
  else d:=a;
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
08.02.2013, 13:00 15
gylayko,
прочитай, что ты сейчас написал:

"если а = нулю, то писвоить а значение едита, если нет - присвоить результату значение а"

Добавлено через 2 минуты
разберись с алгоритмом своей работы: при нажатии кнопки знака - должны ли выполняться вычисления? или всё выполняется только при нажатии кнопки "="?
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
08.02.2013, 13:36  [ТС] 16
Цитата Сообщение от Fenix_dragon Посмотреть сообщение
gylayko,
прочитай, что ты сейчас написал:

"если а = нулю, то писвоить а значение едита, если нет - присвоить результату значение а"
ошибся. нужно "...если нет - присвоить а значение результата"

Цитата Сообщение от Fenix_dragon Посмотреть сообщение
Добавлено через 2 минуты
разберись с алгоритмом своей работы: при нажатии кнопки знака - должны ли выполняться вычисления? или всё выполняется только при нажатии кнопки "="?
вообще было бы хорошо, чтобы при нажатии на знак уже выводились значения уже имеющихся вычислений.
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
08.02.2013, 13:41 17
gylayko,
тогда при нажатии на знак проверяй записано ли чтото в "а"
если да (повтороное нажатие) - вызывай событие нажатия кнопки "=", и действуй как действовал
если нет (первое нажатие) - "действуй как действовал".
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
08.02.2013, 13:48  [ТС] 18
Цитата Сообщение от Fenix_dragon Посмотреть сообщение
gylayko,
тогда при нажатии на знак проверяй записано ли чтото в "а"
если да (повтороное нажатие) - вызывай событие нажатия кнопки "=", и действуй как действовал
если нет (первое нажатие) - "действуй как действовал".
то есть опять же
Delphi
1
if a<>0
а как вызвать нажатие кнопки?
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
08.02.2013, 13:52 19
if a<>0 then
btnRavnoClick(Self);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2013, 13:52
Помогаю со студенческими работами здесь

Floating point overflow
Программа компилится, но при запуске и нажатии баттона (код ниже) возникает фат. ошибка и...

floating point overflow
Здравствуйте. Помогите, пожалуйста, разобраться с данной проблемой, как её решить? вылетает с...

floating point division by zero
floating point division by zero при интегрировании методом прямоугольников. procedure...

Floating point division by zero
Вечер добрый, обращался с этой проблемой, но так и не разобрался. На пункте &quot;Определение потерь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru