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;
我正在尝试测试来自 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;