- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在尝试在 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/
在尝试在 XE4 中编译 Log4D 时,我看到 [dcc32 Error] Log4D.pas(2139): E2003 Undeclared identifier: 'ShortDateForma
我意识到 ShortDateFormat 变量代表用户的偏好。 我还意识到,如果设置发生更改,Delphi 将使用用户的设置自动刷新 ShortDateFormat 变量。 mm/dd/yy 我有一位
我通过执行以下操作获取当前格式设置: _FormatSettings := TFormatSettings.Create(GetThreadLocale); 我的系统短日期格式是dd.MM.yyyy
我是一名优秀的程序员,十分优秀!