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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2014, 17:32   #1
nudist
 
Регистрация: 28.01.2011
Сообщений: 5
По умолчанию Перевод из строки в число с плавающей запятой

У меня на форме присутствует StringGrid в нем в последней ячейке в каждой строке присутствует цена товара в формате к примеру 585.00 руб.
Как из всех строк вытащить числа с плавающей запятой и поместить сумму этих чисел в Edit.

var
i: integer;
s,word : string;
begin
for i:=0 to StringGrid1.RowCount-1 do
begin
s:=StringGrid1.Cells[4,i];
word:=Copy(s,1,Pos(' ',s)-1);
edit1.Text:=word+' '+edit1.Text;
end;
end;

В данном коде он убирает слово руб. в конце но при переводе переменной word из строки в число с плавающей запятой ругается
nudist вне форума Ответить с цитированием
Старый 12.04.2014, 17:42   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не вижу где здесь строка в число преобразуется
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2014, 17:56   #3
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

С минимальными изменениями кода - так:

Код:
var
 i: integer;
 s,word : string;
 begin
 edit1.text='0';
 for i:=0 to StringGrid1.RowCount-1 do
 begin
 s:=StringGrid1.Cells[4,i];
 word:=Copy(s,1,Pos(' ',s)-1);
 edit1.Text:=FloatToStr(StrToFloat(word)+StrToFloat(edit1.Text));
 end;
 end;
Хотя это криворукий метод, лучше так:

Код:
var
 i: integer;
 s,word : string;
 summ:real;
 begin
 summ:=0;
 for i:=0 to StringGrid1.RowCount-1 do
 begin
 s:=StringGrid1.Cells[4,i];
 word:=Copy(s,1,Pos(' ',s)-1);
 summ:=summ+StrToFloat(word);
 end;
 edit1.Text:=FloatToStr(summ);
 end;
blackstrip вне форума Ответить с цитированием
Старый 12.04.2014, 18:09   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

blackstrip, обогнали вы меня)) ну да ладно, вообще лучше делать цикл, чтоб в переменную s добавлялись данные из ячейки, в цикле пока не символ, кроме .,0..9, если встречается точка по середине числа, то заменить на запятую. Если надо-напишу, если нет, то вот результат, считает по всей таблице.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j: integer;
  s: string;
  word,price:real;
begin
  price:=0;
  s:='';
  with StringGrid1 do
  for j:=0 to colcount-1 do
  for i := 0 to RowCount - 1 do
  begin
    s:= trim(Cells[j,i]);
    if s='' then Continue;
    word:=StrToFloat(Copy(s,1,Pos(' ',s)-1));
        price:=price+word;
  end;
  Edit1.Text:=FormatFloat('0.00',price)+' руб.';
end;
<= Весы слева))
Изображения
Тип файла: jpg итоги.jpg (12.4 Кб, 127 просмотров)
Вложения
Тип файла: rar проект.rar (191.3 Кб, 7 просмотров)
from dark to light)

Последний раз редактировалось Алексей_2012; 12.04.2014 в 18:11.
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
плавающей запятой и со схемой! sort Помощь студентам 5 06.03.2013 07:46
Числа с плавающей запятой C0CAINE Общие вопросы C/C++ 1 03.11.2011 19:24
Числа с плавающей запятой Сtrl Общие вопросы C/C++ 3 06.05.2011 08:10
число с плавающей запятой. kotopezzz Помощь студентам 1 25.02.2011 13:11
Числа с плавающей запятой Impuls1989 Помощь студентам 0 03.02.2011 21:03