Delphi-独立于区域设置的应用程序

Delphi-独立于区域设置的应用程序,delphi,delphi-2006,Delphi,Delphi 2006,我需要使应用程序(D2006)独立于区域设置,最重要的是所有的日期格式必须相同 对于请求,我想用FormatDateTime('acontdefined')替换所有FormatDateTime('adateformate')。阿尔索 应用程序.UpdateFormatSettings和应用程序.UpdateMetricSettings应设置为False 还有什么我应该做/照顾的吗 乐:问题是我有两个不同地区设置的用户,他们不想统一他们的设置。我知道这听起来很奇怪,但这是事实。因此,这就是为什么我

我需要使应用程序(D2006)独立于区域设置,最重要的是所有的日期格式必须相同

对于请求,我想用FormatDateTime('acontdefined')替换所有FormatDateTime('adateformate')。阿尔索 应用程序.UpdateFormatSettings应用程序.UpdateMetricSettings应设置为False

还有什么我应该做/照顾的吗


乐:问题是我有两个不同地区设置的用户,他们不想统一他们的设置。我知道这听起来很奇怪,但这是事实。因此,这就是为什么我需要使我的应用程序完全独立于区域设置的原因

应用您自己的记录。适当时调用
FormatDateTime('aConstantDefined',ADateTime,myFormatSettings)

如果应用程序更改系统格式设置,这将避免发生意外。 因此,您不必使用
Application.UpdateFormatSettings
Application.UpdateMetricSettings

更新:


我应该补充一点,所有涉及区域设置的格式字符串函数都采用
t格式设置
重载参数。它通常用于使应用程序线程安全,但在覆盖区域设置时很方便。我经常在为通信/存储目的序列化/反序列化数据时使用此技术。

仅此而已,但为什么要忽略区域设置?这对您的用户不太好?“独立于区域设置”,您的意思是说您想忽略本地系统的日期/时间/小数分隔符?@all-阅读我的LE。谢谢。我理解,但是:他们的愿望是完全合法的,你不应该忽视他们选择的设置,尤其是在用户界面中。因此,您实际上应该将FormatDateTime与一个“标准”设置字符串一起使用(比如“dddd”来获取长日期字符串)。另一方面(从字符串到日期),您应该使用StrToDate函数,这些函数可以采用特定的格式,并按照区域设置指定的格式提供给它。我认为您对这个问题的看法是错误的。用户有充分的理由希望使用他们所在区域的典型区域设置。你需要做的是尊重这些设置。您可以通过以自己定义的单一格式存储数据来实现这一点。当需要显示输出时,请使用常用的区域设置将内部格式转换为当前用户希望使用的格式。同样,在接收用户输入时,使用当前的区域设置转换为您的私人内部格式。只要您在内部将日期作为
TDate
TDateTime
而不是字符串进行操作,您就应该非常安全。真正的问题是当你有不同的时区!(哦,钱也是一件麻烦事。)@Leonardoherra,钱总是一件麻烦事:)。是的,保持数据的最佳格式,并且只在I/O期间进行必要的转换。@Leonardoherra:首先调整本地机器时区偏移的输入后,您可以将UTC日期/时间值存储在
TDateTime
中。您可以在大多数操作中正常使用
TDateTime
,就像机器在UTC 0下运行一样。只要确保在与本地时间戳值进行比较、转换回字符串等时考虑本地时区即可。@RemyLebeau TeamB-正如我所说,这是一个麻烦:-)