文本文件XE2中实数的小数分隔符

时间:2013-01-10 09:37:16

标签: delphi delphi-xe2

以下代码为Writeln(Outfile,testreal)提供了一个带有'。'的实数。小数分隔符,即使我在我的Windows系统中定义了','。如何使用Writeln(Outfile,testreal)将数字写入文本文件?

(FloatToStr方法可以提供正确的结果。)

procedure TForm1.Button1Click(Sender: TObject);
var Outfile:textfile;
    testreal:single;
    StrDummy : string;

begin
  testreal:=1234.1234;
  assignfile(Outfile,'test_real.txt');
  Rewrite(Outfile);
  StrDummy:='Decimal Separator in Windows: '+GetLocaleChar(GetThreadLocale, LOCALE_SDECIMAL, '.')+#13#10+
            'Decimal Separator in Delphi:  '+DecimalSeparator;
  Writeln(Outfile,StrDummy);
  Writeln(Outfile,testreal);
  Writeln(Outfile,FloatToStr(testreal));
  Closefile(Outfile);
end;

给出

Decimal Separator in Windows: ,
Decimal Separator in Delphi:  ,
 1.23412341308594E+0003                      //Ps. Why is there a beginning space here? 
1234,12341308594

1 个答案:

答案 0 :(得分:4)

Legacy Pascal I / O使用Str将浮点值转换为文本。并且Str硬编码.的小数点分隔符。

我建议你使用更现代的I / O形式。例如TStreamWriter类,它使用FloatToStr将浮点数转换为文本。