目前,我将小数分隔符设置为“.”在每个使用这些函数的过程中。
在程序开始时进行全局设置会容易得多,但我发现 Delphi 似乎会定期将其设置回当前区域设置。
我需要确保所有转换都使用小数点,无论程序在哪个国家/地区使用,因为这是此类程序的标准,并且需要所有文件结构和通信协议、表单/编辑中的数字显示等以这种方式格式化。
我在另一个线程中被告知使用小数分隔符不是正确的方法,但我没有得到任何替代方案。我读过的有关该主题的其他主题似乎没有提供任何形成性指导或过于复杂。
有没有一个简单的“正确”方法来做到这一点?
是的DecimalSeparator
全局变量可能会在运行时被 RTL 更改,这在几年前让我很头疼,直到我意识到这一点。
事情是这样的DecimalSeparator
当 Windows 小数点分隔符发生更改(例如使用控制面板)时,由 RTL 进行更新。这似乎是一个相当小的问题。事实上,最终用户多久更改一次系统的小数分隔符?
最大的问题是DecimalSeparator
变量被更新(根据系统设置)每次切换用户时(在 Windows 中)。这让我感到惊讶。也就是说,如果您的系统设置使用逗号 (','
) 作为小数点分隔符,然后设置DecimalSeparator := '.'
在应用程序启动时,然后DecimalSeparator
如果您切换用户,将恢复为逗号(当您切换回来时您会注意到这一点)。
您可以通过以下方式告诉 RTL 不要更新小数分隔符
Application.UpdateFormatSettings := false;
无论如何,有更好的选择DecimalSeparator
,正如其他答案和评论中所讨论的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)