我遇到了一个奇怪的问题,至少影响了我的一些国际用户使用Delphi 6应用程序。情况如下:
- 我的程序定期从充当HTTP服务器的外部设备请求状态报告。 - 设备将状态报告作为响应文档发送回来,该文档具有以名称值对格式分隔的一系列字段(例如- field1 = -0.437)。 - 我将报告字符串拆分成字段,然后再次获取每个字段的名称和数字值。 - 我使用StrToFloat()将浮点字段值转换为字符串格式,并将该函数的结果分配给Variant变量。
这在大多数PC上都可以正常工作,但是我的一些国际用户在尝试在数字值上使用StrToFloat()时会出现EConvertError。以下是日志中错误消息的具体示例:
“EConvertError:'-0.685'不是有效的浮点值”
您可以看到-0.685是有效的浮点数,但我却收到了EConvertError异常。通常情况下,我会预期在小数点处会出现逗号或其他特定于语言环境的标点符号问题,但在这种情况下,数字似乎很好。此外,据我所知,外部设备甚至没有设置字符集的选项。
那么,关于Delphi 6和国际字符集的微妙细节可能会导致此问题,也许与用户的Windows XP / Win7字符设置有关?请注意,我在整个程序中都使用标准的Delphi 6“string”类型字符串,因此我不知道多字节字符集问题可能是根本原因。是否有人遇到过这个问题,并知道该怎么做?
- 我的程序定期从充当HTTP服务器的外部设备请求状态报告。 - 设备将状态报告作为响应文档发送回来,该文档具有以名称值对格式分隔的一系列字段(例如- field1 = -0.437)。 - 我将报告字符串拆分成字段,然后再次获取每个字段的名称和数字值。 - 我使用StrToFloat()将浮点字段值转换为字符串格式,并将该函数的结果分配给Variant变量。
这在大多数PC上都可以正常工作,但是我的一些国际用户在尝试在数字值上使用StrToFloat()时会出现EConvertError。以下是日志中错误消息的具体示例:
“EConvertError:'-0.685'不是有效的浮点值”
您可以看到-0.685是有效的浮点数,但我却收到了EConvertError异常。通常情况下,我会预期在小数点处会出现逗号或其他特定于语言环境的标点符号问题,但在这种情况下,数字似乎很好。此外,据我所知,外部设备甚至没有设置字符集的选项。
那么,关于Delphi 6和国际字符集的微妙细节可能会导致此问题,也许与用户的Windows XP / Win7字符设置有关?请注意,我在整个程序中都使用标准的Delphi 6“string”类型字符串,因此我不知道多字节字符集问题可能是根本原因。是否有人遇到过这个问题,并知道该怎么做?