TryStrToFloat 一直返回 false

TryStrToFloat keeps returning false

我正在尝试测试来自 TEdit 的值,该值需要转换为 Double。我遇到的问题是,无论我做什么,函数 TryStrToFloat 一直返回 false。

    var
      str : String;
      value : Double;
   begin
      str := '950.00';
      value := 0;

     if TryStrToFloat(str, value) then
       result := value
    else
    begin
      showMessage('Not a legal value');
      result := 0;
    end;
  end;

对于上面的示例,我提供了值“950.00”,然后我用该函数对其进行了测试,但我一直收到“不是合法值”的消息。即使我从 TEdit 发送“950.00”,我仍然遇到同样的问题。我错过了什么?

您缺少默认为 Windows 自己设置的小数点分隔符。例如,在法语 Windows 上,小数点分隔符是逗号。

这样试试:

var
    str   : String;
    value : Double;
begin
    FormatSettings.DecimalSeparator := '.';
    str   := '950.00';
    value := 0;

    if TryStrToFloat(str, value) then
       ShowMessage('OK')
    else
        ShowMessage('Not a legal value');
end;