LongDayNames - 最初在SysUtils中

use*_*296 6 delphi delphi-xe delphi-xe5

从Delphi XE迁移到XE5.

Label1.Caption:= 'Today''s day is '+LongDayNames[DayOfWeek(Date)];
Run Code Online (Sandbox Code Playgroud)

'LongDayNames'不再有效.我看到Delphi将这些用于我的用途:

System.SysUtils, System.Variants, System.Classes,
Run Code Online (Sandbox Code Playgroud)

我如何找到'LongDayNames'以便它可以工作?

Ken*_*ite 7

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

Label1.Caption := SysUtils.FormatSettings.LongDayNames[DayOfWeek(Date)]; 
Run Code Online (Sandbox Code Playgroud)

这允许它们基于当前的Windows语言环境进行本地化.

请注意,使用全局SysUtils.FormatSettings不是线程安全的.要创建的格式设置一个线程安全的复制,创建的本地副本TFormatSettings使用TFormatSettings.Create的描述文档在这里代替.

  • @David:不,它还在那里.(代码在发布之前在XE5中进行了快速测试.)它确实不是线程安全的(线程应该创建一个新的本地实例`TFormatSettings`并使用它代替),但问题是范围一般.我链接了文档以获取更多详细信息.在XE5中消失的是全局的"LongDayNames"变量本身; 它现在只能通过`TFormatSettings`获得(并且`SysUtils.FormatSettings`中包含它的全局实例是获取它们的一种方法). (2认同)