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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2013, 17:07   #1
BJIagu
 
Регистрация: 24.02.2013
Сообщений: 7
По умолчанию Умножение дробных чисел

Всем привет!
Прошу помочь, у меня возникает проблема с умножением дробных чисел.
Работаю в StringGrid, ниже указан код с целыми числами, слава богу тут ошибку не выдает, с моими кривыми руками переделать на FloatToStr - ошибка.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
stringgrid1.Cells[4,1]:=inttostr(strtoint(stringgrid1.Cells[2,1])*strtoint(stringgrid1.Cells[3,1]));
end;
Подскажите пожалуйста, как переделать код

Последний раз редактировалось Stilet; 31.03.2013 в 17:12.
BJIagu вне форума Ответить с цитированием
Старый 31.03.2013, 19:14   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну каждый элемент можно получатьв отдельную переменную и не париться.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.03.2013, 19:22   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от BJIagu Посмотреть сообщение
ошибка
Паяльник уже можно доставать или сами сознаетесь, что за ошибка?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 31.03.2013, 19:45   #4
BJIagu
 
Регистрация: 24.02.2013
Сообщений: 7
По умолчанию

Ошибка:
There is no overloaded version of 'FloatToStr' that can be called with these arguments

при:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
stringgrid1.Cells[4,1]:=inttostr(floattostr(stringgrid1.Cells[2,1])*floattostr(stringgrid1.Cells[3,1]));

end;
Необходимо, чтобы две ячейки перемножались, будь числа в них целыми или дробными

Последний раз редактировалось Stilet; 31.03.2013 в 19:54.
BJIagu вне форума Ответить с цитированием
Старый 31.03.2013, 19:54   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тебе нужна StrToFloat() а не FloatToStr()
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2013, 19:59   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

IntToStr <-> FloatToStr
StrToInt <-> StrToFloat
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 31.03.2013, 20:20   #7
BJIagu
 
Регистрация: 24.02.2013
Сообщений: 7
По умолчанию

Спасибо ребят, всё работает!!!=))

И ещё одна ошибочка, при заполнении нужных ячеек в поле StringGrid, нажимаю на запуск, выдает ошибку:
Project1.exe raised exception EConvertError with message ''' is not a valid floating point value'.
Тут же нажимаю запуск ещё раз, выдает правильный ответ, и ещё одну ошибку:
''is not a valid floating point value.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
stringgrid1.Cells[4,1]:=floattostr((strtofloat(stringgrid1.Cells[2,1])*3+2*strtofloat(stringgrid1.Cells[3,1]))/5);
end;
Буду признателен, заранее спасибо

Последний раз редактировалось Stilet; 31.03.2013 в 22:18.
BJIagu вне форума Ответить с цитированием
Старый 31.03.2013, 21:28   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
'' is not a valid floating point value
Пустая строка действительно не является дробью.

Проверяй, не перепутал ли индексы колонок/строк и 1-индексацию/0-индексацию.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 31.03.2013, 22:15   #9
BJIagu
 
Регистрация: 24.02.2013
Сообщений: 7
По умолчанию

Кажется понял, а можно по подробнее? С индексами не сталкивался ранее

решение я ставлю на каждую ячейку:
stringgrid1.Cells[4,1]:=floattostr(strtofloat(stringgrid1 .Cells[2,1])*strtofloat(stringgrid1.Cells[3,1]));
stringgrid1.Cells[4,2]:=floattostr(strtofloat(stringgrid1 .Cells[2,2])*strtofloat(stringgrid1.Cells[3,2]));
stringgrid1.Cells[4,3]:=floattostr(strtofloat(stringgrid1 .Cells[2,3])*strtofloat(stringgrid1.Cells[3,3]));
Если выберу таблицу из 2 строчек, а решение стоит на три строчки, соответственно 3 строчка пустая, как и где мне поставить индексы?
BJIagu вне форума Ответить с цитированием
Старый 01.04.2013, 10:40   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Индексация идёт с нуля. Первая колонка/строка имеют индекс 0, а вовсе не 1.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод дробных чисел bloodykz C++ Builder 1 23.03.2013 18:13
перевод дробных чисел ArniLand Общие вопросы C/C++ 0 19.02.2011 18:58
создать массив дробных чисел из 6 элементов Agelka Помощь студентам 3 23.11.2009 16:01
Преобразование дробных чисел Gon Помощь студентам 5 01.05.2008 13:12