【问题标题】:How to define a TFormatSettings constant (Delphi 10)如何定义 TFormatSettings 常量(Delphi 10)
【发布时间】:2017-01-27 12:56:14
【问题描述】:

我只是想将 Delphi 2007 应用程序转换为 Delphi 10。在 2007 版软件中,我使用 TFormatSettings 常量。由于 TFormatSettings 类型在两者之间发生了变化,我遇到了以下问题: 如何定义 TFormatSettings 常量?我尝试了以下方法:

  XML_FormatSettings : TFormatSettings = (
    CurrencyString:            '€';
    CurrencyFormat:            3;
    CurrencyDecimals:          2;
    DateSeparator:             '-';
    TimeSeparator:             ':';
    ListSeparator:             ';';
    ShortDateFormat:           'yyyy-MM-dd';
    LongDateFormat:            'dddd, d. MMMM yyyy';
    TimeAMString:              '';
    TimePMString:              '';
    ShortTimeFormat:           'hh:nn:ss';
    LongTimeFormat:            'hh:nn:ss';
    ShortMonthNames:           ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
    LongMonthNames:            ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'Augut', 'September', 'October', 'November', 'December');
    ShortDayNames:             ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
    LongDayNames:              ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    EraInfo:                   (
      EraName:   '';               // <= Error here
      EraOffset: 0;
      EraStart:  0;
      EraEnd:    0;);
    ThousandSeparator:         ',';
    DecimalSeparator:          '.';
    TwoDigitYearCenturyWindow: 0;
    NegCurrFormat:             8;
    NormalizedLocaleName:      '';);

这给出了以下错误:未声明的标识符:'EraName'

我尝试了其他几种方法,但没有找到解决方案。是否可以定义一个 TFormatSettings 常量?声明常量时如何处理记录类型中定义和使用的记录类型?

【问题讨论】:

  • 您可以使用特定的语言环境进行预定义,例如适合(或更改所需内容)的FS := TFormatSettings.Create('en-US');
  • 谢谢,但我想定义一个常量而不是变量。这将是我最后一次救援(有点)。
  • 我认为您不能将其定义为常量。 EraInfo 被声明为记录的动态数组,我不知道有什么方法可以在常量记录中声明它。
  • 如果不需要EraInfo(亚洲日期时间转换),只需将其从常量声明中删除即可。
  • @LU RD:谢谢,目前这对我有用!如果没有定义,默认是什么?

标签: delphi constants record delphi-10-seattle delphi-10.1-berlin


【解决方案1】:

EraInfo是动态记录数组,不能定义常量动态记录数组。 如果不需要EraInfo,则省略声明:

XML_FormatSettings : TFormatSettings = (
    CurrencyString:            '€';
    CurrencyFormat:            3;
    CurrencyDecimals:          2;
    DateSeparator:             '-';
    TimeSeparator:             ':';
    ListSeparator:             ';';
    ShortDateFormat:           'yyyy-MM-dd';
    LongDateFormat:            'dddd, d. MMMM yyyy';
    TimeAMString:              '';
    TimePMString:              '';
    ShortTimeFormat:           'hh:nn:ss';
    LongTimeFormat:            'hh:nn:ss';
    ShortMonthNames:           ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
    LongMonthNames:            ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'Augut', 'September', 'October', 'November', 'December');
    ShortDayNames:             ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
    LongDayNames:              ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    ThousandSeparator:         ',';
    DecimalSeparator:          '.';
    TwoDigitYearCenturyWindow: 0;
    NegCurrFormat:             8;
    NormalizedLocaleName:      '');

省略的字段可能为零或为零,具体取决于它们的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2016-07-23
    • 2014-10-07
    • 1970-01-01
    • 2012-10-21
    • 2016-07-14
    相关资源
    最近更新 更多