Delphi 5 – StrXoFloat在WinXP和Win2K上的结果不同
发布时间:2020-12-15 09:41:19 所属栏目:大数据 来源:网络整理
导读:我有这个奇怪的问题,我的机器和生产服务器上的字符串转换得到不同的结果,例如: procedure TForm1.Button1Click(Sender: TObject);var s1: string; f1: double;begin s1 := '1.234'; f1 := StrToFloat(s1); end;procedure TForm1.Button2Click(Sender: TObje
我有这个奇怪的问题,我的机器和生产服务器上的字符串转换得到不同的结果,例如:
procedure TForm1.Button1Click(Sender: TObject); var s1: string; f1: double; begin s1 := '1.234'; f1 := StrToFloat(s1); end; procedure TForm1.Button2Click(Sender: TObject); var s2: string; f2: double; begin s2 := '1,234'; f2 := StrToFloat(s2); end; 在我的WinXP机器上的’1.234’中的Button1Click结果不是有效的浮点值,而在Win2K机器上这可以正常工作. 另一端的Button2Click在我的WinXP上运行,但确实导致’1,234’不是有效的浮点值错误. 两台机器都将区域设置设置为“德语(奥地利)” – 任何关于为什么会发生这种情况的想法,或者至少为什么区域设置对话框确实显示与Delphi“DecimalSeparator”和“GetLocaleChar(GetThreadLocale,LOCALE_SDECIMAL)不同的十进制分隔符,’.’)? 问候, 解决方法
DecimalSeparator变量存储区域设置中定义的Windows小数分隔符的值.如果要使用StrToFloat函数转换的字符串中出现小数点,则它必须与当前的DecimalSeparator值匹配.我相信虽然区域设置匹配小数分隔符在两个系统中必须不同.您可以使用此代码检查两个系统中设置的值.
uses Windows; procedure TForm1.Button3Click(Sender: TObject); Var StrDummy : string; begin StrDummy:='Decimal Separator in Windows '+GetLocaleChar(GetThreadLocale,LOCALE_SDECIMAL,'.')+#13#10+ 'Decimal Separator in Delphi '+DecimalSeparator; ShowMessage(StrDummy); end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |