Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Ошибка при использовании функции StrToFloat   Найти похожие ветки 

 
raiks   (2004-09-12 14:08) [0]

Мне нужно прочитать текстовый файл, все значения в котором записаны в виде x.yyyy (напр. 6.3245), и преобразовать их в тип Extended для дальнейшей работы с ними. При попытке использовать функцию StrToFloat Delphi вываливается с ошибкой EConvertError.

e:= StrToFloat (‘6.3245’)        //  Ошибка EConvertError ‘6.3245 is not a valid floating point value’.

При этом, почему–то, строка  e:=StrToFloat (‘6,3245’), где вместо разделителя используется не точка, а запятая, ошибки не вызывает. С чем это связано и как можно решить эту проблему?

Спасибо.


 
Семен Сорокин ©   (2004-09-12 14:14) [1]

DecimalSeparator + f1
StrToFloatDef


 
Vulko ©   (2004-09-12 16:50) [2]

В win можно задать разделитель дробной и целой частей. По дефолту в русской версии разделителем является запятая.


 
Vulko ©   (2004-09-12 16:50) [3]

Удалено модератором


 
QuasiLamo ©   (2004-09-12 18:15) [4]

Пусть в строке s хранится число. После этих двух сток
s:=stringreplace(".",DecimalSeparator,s,[]);
s:=stringreplace(",",DecimalSeparator,s,[]);

какой бы ни был объявлен разделитель в системе, заменится на правильный.
Сам придумал и всегда так делаю... :)


 
KSergey ©   (2004-09-13 09:10) [5]

> [4] QuasiLamo ©   (12.09.04 18:15)

Либо так: (с учетом "x.yyyy")

var
  SavDecimalSeparator: Char;
begin
  SavDecimalSeparator := DecimalSeparator;
  DecimalSeparator := ".";
  try
    ... работаем с файлом ...
  finally
   DecimalSeparator := SavDecimalSeparator;
  end;
end;


Возможно, в данной частной задаче можно и не восстанавливать ;)


 
PVOzerski ©   (2004-09-13 10:05) [6]

Я бы использовал val вместо StrToFloat. Эта процедура всегда считает десятичным разделителем точку.


 
Mim1 ©   (2004-09-13 10:10) [7]


>  [5] KSergey ©   (13.09.04 09:10)
> > [4] QuasiLamo ©   (12.09.04 18:15)
>
> Либо так: (с учетом "x.yyyy")

Либо так

s[pos(s,".")] := DecimalSeparator;


 
raiks   (2004-09-13 11:17) [8]

Всем большое спасибо! Разобрался, все работает.



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
4-1092663287
AngelOfDarkness
2004-08-16 17:34
2004.09.26
Программирование Com-порта под WinNT


14-1094738684
oldman
2004-09-09 18:04
2004.09.26
Развлечемся?


1-1094706565
ArMellon
2004-09-09 09:09
2004.09.26
Как у SpeedButton Убрать рамку после ухода мыши с кнопки?


14-1094359127
olookin
2004-09-05 08:38
2004.09.26
Процент сов, жаворонков и сусликов...


1-1095052021
pavel777
2004-09-13 09:07
2004.09.26
DLL_PROCESS_DETACH