![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Помогите пожалуйста решить проблему. Каким образом можно перевести значение вида 6.19063511890195E+0001 которое храниться и считывается с текстового файла и присвоить это значение другой переменной? Код:
var
fi_r:Real;
tr1:Tstringlist;
tr2:Tstringlist;
begin
tr1:= TStringList.Create ();
tr1.LoadFromFile('trajectory_P1.txt');
tr2.text:=stringReplace(tr1[0],#32,#13#10,[rfReplaceAll]);
fi_r:=StrToFloat(tr2[6]);
showmessage(FloatToStr(fi_f));
end;При выполнении возникает ошибка delphi raised exception class econverterror 6.19063511890195E+0001 with message is not valid floating point value. Как можно устранить эту ошибку? Заранее благодарен за ответы! |
|
#2
|
||||
|
||||
|
Цитата:
Перед вызовом StrToFloat задай правильный разделитель в глобальной переменной DecimalSeparator: Код:
DecimalSeparator := '.';
// Теперь можно:
fi_r := StrToFloat('6.19063511890195E+0001'); |
|
#3
|
|||
|
|||
|
Большое Спасибо! Все заработало!
|
|
#4
|
|||
|
|||
|
Способ понадёжнее, т.к. просто DecimalSeparator - непотокобезопасен и deprecated с какой-то версии дельфи. Да и просто гибче для разработчика, не надо следить за глобальной переменной.
Код:
var
fs: TFormatSettings;
...
fs.DecimalSeparator := '.';
StrToFloat('6.19063511890195E+0001', fs); |