|
#1
|
|||
|
|||
Из string в Real
Здравствуйте!
Помогите пожалуйста решить проблему. Каким образом можно перевести значение вида 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); |