x.xxxx不是有效的浮点数.在语言/本地之间转换

Wiz*_*ard 9 delphi string floating-point

我有一个西班牙语用户正在invalid floating point error这样做

var
  S : String;
  R : Real;
begin
  S := '3.12345';
  R := StrToFloat(S); //- Exception here.
Run Code Online (Sandbox Code Playgroud)

原因是他的位置,用于小数位!
我怎样才能安全地将上面的字符串转换为用户的浮点数,而不会将其轰炸出来.

Joh*_*ica 12

滚动您自己的StrToFloat版本

function StrToFloat_UK(const AStr: string): Float;
var
  FS: TFormatSettings;
begin
  FS.Create('en-UK');
  Result:= StrToFloat(AStr, FS): 
end;
Run Code Online (Sandbox Code Playgroud)

并使用它代替StrToFloat.

  • 从embarcadero文档:1.声明TFormatSettings类型的变量.2.调用TFormatSettings.Create以使用区域设置信息填充TFormatSettings变量.3.将TFormatSettings变量作为字符串格式化例程的最后一个参数传递. (2认同)

Joe*_*oey 6

使用的第二个重载StrToFloat用一个TFormatSettings已经DecimalSeparator设定 ..