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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 15:38   #1
darkduelist
Пользователь
 
Регистрация: 04.04.2009
Сообщений: 11
Печаль (Delphi) Ошибка StrToFloat

Вроде простая программа а вызвала кучу проблем. Есть файл формата CSV c которого надо считать информацию и выполнить пару действий.
Ошибка вылетает при попытке перевести число из ячейки при помощи StrToFloat. Ошибку и часть кода написал, также прикрепил файлы с программой и фалом(т.к. формат CSV загрузить нельзя я добавил файл в архив).
Цитата:
Project Project1.exe reised exception class EConvertError with message "-0.032000000000' is not a valid floating point value'. Process stopped.
Код:
procedure TForm1.Button1Click(Sender: TObject);
//const
  //DecimalSeparator = '.';
var
  i : Integer;
  sum : Real;
begin
  sum:=0;
  //ShowMessage(form1.StringGrid1.cells[3,0]);
  for i:=0 to form1.StringGrid1.RowCount-1 do
  sum:=sum+StrToFloat(form1.StringGrid1.cells[3,i]);//тут ошибка
  Soprativ.Caption:=FloatToStr(sum/i);
end;
Вложения
Тип файла: zip Delphi_v0.1.zip (235.9 Кб, 7 просмотров)
Тип файла: zip TEK0001.zip (5.5 Кб, 7 просмотров)
darkduelist вне форума Ответить с цитированием
Старый 09.12.2012, 15:43   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Покажите содержимое ячеек.
Базиля вне форума Ответить с цитированием
Старый 09.12.2012, 15:46   #3
romlo
Пользователь
 
Аватар для romlo
 
Регистрация: 21.06.2010
Сообщений: 49
По умолчанию

Разделитель целого и дробного должна быть запятая.
romlo вне форума Ответить с цитированием
Старый 09.12.2012, 15:47   #4
darkduelist
Пользователь
 
Регистрация: 04.04.2009
Сообщений: 11
По умолчанию

Пример:
(0,3) = -0.032000000000
(1,3) = -0.031980000000
(2,3) = -0.031960000000
Сам файл с данными находится в TEK0001.zip.

romlo, то есть мне надо во всех числах заменить '.' на ','?

Последний раз редактировалось Stilet; 09.12.2012 в 16:56.
darkduelist вне форума Ответить с цитированием
Старый 09.12.2012, 15:51   #5
romlo
Пользователь
 
Аватар для romlo
 
Регистрация: 21.06.2010
Сообщений: 49
По умолчанию

Можно сделать так:

Код:
for i:=0 to form1.StringGrid1.RowCount-1 do
  begin
  s := form1.stringGrid1.cells[3,i];
  s[Pos('.',s)] := DecimalSeparator;
  sum:=sum+StrToFloat(s);
  end;
Только надо добавить в начале
Код:
var s : string;
romlo вне форума Ответить с цитированием
Старый 09.12.2012, 15:53   #6
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

darkduelist
Да, или преобразовывай в коде точку в запятую.
Базиля вне форума Ответить с цитированием
Старый 09.12.2012, 16:04   #7
darkduelist
Пользователь
 
Регистрация: 04.04.2009
Сообщений: 11
По умолчанию

romlo, спасибо работает! ОГРОМНОЕ СПАСИБО!!!!!!!!
darkduelist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26
Функция StrtoFloat не правильно возвращает число Ra88it Помощь студентам 2 02.12.2008 20:26
StrToFloat и FloatToStr bles Помощь студентам 5 30.01.2008 22:27
Снова StrToFloat sander Общие вопросы Delphi 4 27.09.2007 09:02
StrToFloat nporaMep Общие вопросы Delphi 2 15.12.2006 07:42