x.xxxx 不是有效的浮点数。语言/本地语言之间的转换
我有一位西班牙用户在执行此操作时收到无效浮点错误
。
var
S : String;
R : Real;
begin
S := '3.12345';
R := StrToFloat(S); //- Exception here.
其原因是他的位置使用 ,
作为小数位!
我怎样才能安全地将上面的字符串转换为用户的浮点数而不被轰炸。
I have a spanish user who is getting an invalid floating point error
when doing this
var
S : String;
R : Real;
begin
S := '3.12345';
R := StrToFloat(S); //- Exception here.
The reason for this is that his location uses ,
for the decimal place!
How can I safely convert the string above to a float for the user without it bombing out.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
滚动您自己的 StrToFloat 版本
并使用它代替 StrToFloat。
Roll your own version of StrToFloat
And use this in place of StrToFloat.
将
StrToFloat
的第二个重载与将DecimalSeparator
设置为.
的TFormatSettings
结合使用。Use the second overload of
StrToFloat
with aTFormatSettings
that hasDecimalSeparator
set to.
.您可以使用过程
val
,它会忽略本地系统设置。You could use the procedure
val
, it disregards local system settings.如果您知道字符串使用
.
作为小数点分隔符,那么您应该执行类似The line
is very important 的操作。该属性的默认值为
true
,在这种情况下,DecimalSeparator
变量可以随时恢复为其默认值(例如,
) ,例如当您切换用户时。If you know that the strings use
.
as the decimal separator, then you should do something likeThe line
is very important. The default value of this property is
true
, and in such case, theDecimalSeparator
variable may be reverted to its default value (e.g.,
) anytime, for instance when you switch user.