- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个奇怪的问题,它至少影响了我的 Delphi 6 应用程序的一些国际用户。场景如下:
这在大多数 PC 上都可以正常工作,但当我尝试对数值使用 StrToFloat() 时,我的一些国际用户遇到了 EConvertError's。这是我的日志中的错误消息的具体示例:
EConvertError: '-0.685' is not a valid floating point value
如您所见,-0.685 是一个有效的 float ,但我收到了 EConvertError 异常。通常我希望看到小数点所在的逗号,或其他一些特定于语言环境的标点符号问题,但在这种情况下数字看起来很好。另外,据我所知,外部设备甚至没有设置字符集的选项。
那么 Delphi 6 和国际字符集的哪些细微差别可能会导致此问题,也许与用户的 Windows XP/Win7 字符设置有关?请注意,我在整个程序中使用标准 Delphi 6“string”转换字符串,因此我不明白多字节字符集问题可能是根本原因。有人遇到过这个问题并且知道该怎么办吗?
最佳答案
您的远程用户的计算机需要 ,
作为小数点分隔符。当遇到 .
时,会引发 EConvertError
异常。在需要 ,
作为小数点分隔符的机器上(例如大多数欧洲和南美国家),-0.685
确实不是有效的浮点值。
Normally I would expect to see a comma where the decimal point is, or some other locale specific punctuation problem, but the number appears fine in this case.
您当前的问题只是上述问题的反面。通常,由于您的语言环境使用 .
作为分隔符,因此您习惯于在使用 ,
数据时遇到问题。将自己置于使用 ,
作为分隔符的国家/地区的某个人的位置。对于他们来说,当使用带有 .
的数据时,他们会习惯于看到异常。
您可以通过规范输入以使用与计算机区域设置相同的小数分隔符来解决该问题。在现代 Delphi 上,您可以通过使用 StrToFloat
重载来解决该问题,该重载接收 TFormatSettings
参数并显式指定 .
用作此转换的小数点分隔符。不幸的是,该功能在 Delphi 6 中不可用。
关于delphi - Delphi 6 应用程序中使用 StrToFloat() 导致 EConvertError 的其他原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9895616/
我的应用程序是一个月前用 Delphi 7 编写的。现在我想将 float str 值(如 12.5)转换为扩展值,但 delphi 引发错误。 调试器异常通知 Project Educatee.ex
我在使用 StrToFloat 例程时遇到问题。我在 Windows Vista 上运行 Delphi 7,区域格式设置为德语(奥地利) 如果我运行以下代码 - DecimalSeparator:='
目前,我将 DecimalSeparator 设置为“.”在使用这些函数的每个过程中。 在程序开始时进行全局设置会容易得多,但我发现 Delphi 似乎会定期将其设置回当前区域设置。 我需要确保所有转
我在这里做错了什么?我只是想将格式化字符串转换为 double 型,并使用 TFormatSettings 作为参数传递给 StrToFloat。我收到以下异常: '3,332.1' is not
最近我发现了奇怪的事情:结果 var d: double; begin d := StrToFloat('-1.79E308'); 与 ASE 和 SQL Server 通过转换为浮点字段类型
以下代码尝试转换远远超出 double 范围的值 StrToFloat('1e99999999') 在使用 Windows 32 位编译器的 Delphi 10.2r3 中正确报告错误的浮点值,但是当
我在 XE6 项目中工作,但这也可能适用于其他版本的构建器。 我正在查看一个函数名称,我认为它可能具有误导性。我很好奇 StrToFloat() 是返回 float 还是返回 double。我找到了一
我遇到了一个奇怪的问题,它至少影响了我的 Delphi 6 应用程序的一些国际用户。场景如下: 我的程序定期从充当 HTTP 服务器的外部设备请求状态报告。 设备将状态报告作为响应文档发回,其中包含一
我有一个奇怪的问题,我的机器和生产服务器上的字符串转换得到不同的结果,例如: procedure TForm1.Button1Click(Sender: TObject); var s1: st
我是一名优秀的程序员,十分优秀!