gpt4 book ai didi

delphi - ShortDateFormat vs FormatSettings.ShortDateFormat?

转载 作者:行者123 更新时间:2023-12-02 12:21:31 30 4
gpt4 key购买 nike

在尝试在 XE4 中编译 Log4D 时,我看到

[dcc32 Error] Log4D.pas(2139): E2003 Undeclared identifier: 'ShortDateFormat'

在这一行:

SetOption(DateFormatOpt, ShortDateFormat); 

通过谷歌搜索,我找到了将 ShortDateFormat 更改为 FormatSettings.ShortDateFormat 的解决方案,这导致了在 XE4 上的以下编译代码:

SetOption(DateFormatOpt, FormatSettings.ShortDateFormat); 

但是,我不太明白为什么需要指定 FormatSettings,因为我已经在使用中包含了 SysUtils声明,其次,我不确定如何重写这一行以继续向后兼容这个开源项目已经支持的 Delphi 版本。

我想我可以在该参数或代码行周围为任何版本的 Delphi 引入 FormatSettings 添加一个 IFDEF - 但我什至不确定那是哪个版本的 Delphi,更不用说这是否是解决这个问题的好或坏方法。

最佳答案

全局SysUtils.ShortDateFormat最终在XE3中被删除,参见Global Variables

在现代Delphi版本中,也不建议使用全局FormatSettings变量记录。主要原因是它不是线程安全的(旧的全局 ShortDateFormat 也受到了影响)。您应该定义自己的 TFormatSettings 变量,该变量在整个范围内保持一致。

这也将使您的代码向后兼容。

但是,初始化 FormatSetting 记录的方式因 Delphi 版本而异。

在旧版本 (D7+) 上使用:

GetLocaleFormatSettings(GetThreadLocale, FormatSettings);

在较新的版本 (XE+) 中:

FormatSettings := TFormatSettings.Create(GetThreadLocale); // Or one of the overloads

关于delphi - ShortDateFormat vs FormatSettings.ShortDateFormat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23707323/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com