【问题标题】:LongDayNames - originally in SysUtilsLongDayNames - 最初在 SysUtils 中
【发布时间】:2014-03-27 20:37:36
【问题描述】:

从 Delphi XE 迁移到 XE5。

Label1.Caption:= 'Today''s day is '+LongDayNames[DayOfWeek(Date)];

“LongDayNames”不再有效。我看到 Delphi 将这些用于我的用途:

System.SysUtils, System.Variants, System.Classes,

如何找到“LongDayNames”以使其正常工作?

【问题讨论】:

  • LongDayNames 即使在 XE 中也被标记为已弃用。在编译源代码时,您应该得到使用 FormatSettings.LongDayNames 的提示。好吧,你已经被警告了。
  • @Uwe 和 Embarcadero 让从 D2007 迁移变得更加困难。我想快速概念验证移植到 XE5 以查看 FireDAC 性能,但不得不放弃,因为它不会快速。请记住,并非每个人都会逐步完成每个版本。

标签: delphi delphi-xe delphi-xe5


【解决方案1】:

您使用 SysUtils.FormatSettings 全局变量中包含的值:

Label1.Caption := SysUtils.FormatSettings.LongDayNames[DayOfWeek(Date)]; 

这允许它们根据当前的 Windows 语言环境进行本地化。

请注意,使用全局 SysUtils.FormatSettings 不是线程安全的。要创建格式设置的线程安全副本,请使用TFormatSettings.Create 创建TFormatSettings 的本地副本,如documentation here 中所述。

【讨论】:

  • 那个全局变量仍然是正确的方法吗?我记得 Remy 说过它完全在 XE5 中,还是我记错了。
  • @DavidHeffernan,全局变量 ist 在 XE5 中仍然可用。只有警告说使用它不是线程安全的。
  • @David:不,它还在。 (该代码在发布之前在 XE5 中进行了快速测试。)它确实不是线程安全的(线程应该创建一个新的 TFormatSettings 的本地实例并改用它),但提出的问题是一般性的。我链接了文档以获取更多详细信息。在 XE5 中消失的是全局 LongDayNames 变量本身;它现在只能通过TFormatSettings 获得(并且包含在SysUtils.FormatSettings 中的它的全局实例是获取它们的一种方式)。
【解决方案2】:

我使用这种方式为我的国家巴西个性化了长名称:记得添加使用 System.SysUtils

FormatSettings.LongDayNames[1] := 'Domingo';
FormatSettings.LongDayNames[2] := 'Segunda';
FormatSettings.LongDayNames[3] := 'Terça';
FormatSettings.LongDayNames[4] := 'Quarta';
FormatSettings.LongDayNames[5] := 'Quinta';
FormatSettings.LongDayNames[6] := 'Sexta';
FormatSettings.LongDayNames[7] := 'Sábado';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-26
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多