From Appmethod Libraries
Jump to: navigation, search

Object Pascal

  TFormatSettings = record
      TEraInfo = record
        EraName: string;
        EraOffset: Integer;
        EraStart: TDate;
        EraEnd: TDate;
  strict private
{$IF defined(MSWINDOWS) OR defined(USE_LIBICU) OR defined(LINUX)}
    class procedure GetDayNames(Locale: TLocaleID; var AFormatSettings: TFormatSettings); static;
    class procedure GetMonthNames(Locale: TLocaleID; var AFormatSettings: TFormatSettings); static;
    class procedure GetEraInformation(Locale: TLocaleID; var AFormatSettings: TFormatSettings); static;
 {$IF defined(MSWINDOWS) OR defined(LINUX)}
    class function GetString(Locale: TLocaleID; LocaleItem, DefaultIndex: Integer;
      const DefaultValues: array of Pointer): string; static;
 {$ENDIF defined(MSWINDOWS)}
{$ELSEIF defined(MACOS)}
    class procedure GetEraInformation(Locale: TLocaleID; Formatter: CFDateFormatterRef; var AFormatSettings: TFormatSettings); static;
    class procedure GetDayNames(Formatter: CFDateFormatterRef; var AFormatSettings: TFormatSettings); static;
    class procedure GetMonthNames(Formatter: CFDateFormatterRef; var AFormatSettings: TFormatSettings); static;
    class function AdjustLocaleName(const LocaleName: string): string; static;
    class function TranslateDateFormat(Locale: TLocaleID; LocaleType: Integer;
      const Default: string; const Separator: Char): string; static;
    CurrencyString: string;
    CurrencyFormat: Byte;
    CurrencyDecimals: Byte;
    DateSeparator: Char;
    TimeSeparator: Char;
    ListSeparator: Char;
    ShortDateFormat: string;
    LongDateFormat: string;
    TimeAMString: string;
    TimePMString: string;
    ShortTimeFormat: string;
    LongTimeFormat: string;
    ShortMonthNames: array[1..12] of string;
    LongMonthNames: array[1..12] of string;
    ShortDayNames: array[1..7] of string;
    LongDayNames: array[1..7] of string;
    EraInfo: array of TEraInfo;
    ThousandSeparator: Char;
    DecimalSeparator: Char;
    TwoDigitYearCenturyWindow: Word;
    NegCurrFormat: Byte;
    NormalizedLocaleName: string;
    class function Create: TFormatSettings; overload; static; inline;
    class function Create(Locale: TLocaleID): TFormatSettings; overload; platform; static;
    class function Create(const LocaleName: string): TFormatSettings; overload; static;
    function GetEraYearOffset(const Name: string): Integer;


struct DECLSPEC_DRECORD TFormatSettings
    struct DECLSPEC_DRECORD TEraInfo
        System::UnicodeString EraName;
        int EraOffset;
        System::TDate EraStart;
        System::TDate EraEnd;
    typedef System::StaticArray<System::UnicodeString, 12> _TFormatSettings__1;
    typedef System::StaticArray<System::UnicodeString, 12> _TFormatSettings__2;
    typedef System::StaticArray<System::UnicodeString, 7> _TFormatSettings__3;
    typedef System::StaticArray<System::UnicodeString, 7> _TFormatSettings__4;
    typedef System::DynamicArray<TEraInfo> _TFormatSettings__5;
    static void __fastcall GetDayNames(unsigned Locale, TFormatSettings &AFormatSettings);
    static void __fastcall GetMonthNames(unsigned Locale, TFormatSettings &AFormatSettings);
    static void __fastcall GetEraInformation(unsigned Locale, TFormatSettings &AFormatSettings);
    static System::UnicodeString __fastcall GetString(unsigned Locale, int LocaleItem, int DefaultIndex, void * const *DefaultValues, const int DefaultValues_High);
    static System::UnicodeString __fastcall AdjustLocaleName(const System::UnicodeString LocaleName);
    static System::UnicodeString __fastcall TranslateDateFormat(unsigned Locale, int LocaleType, const System::UnicodeString Default, const System::WideChar Separator);
    System::UnicodeString CurrencyString;
    System::Byte CurrencyFormat;
    System::Byte CurrencyDecimals;
    System::WideChar DateSeparator;
    System::WideChar TimeSeparator;
    System::WideChar ListSeparator;
    System::UnicodeString ShortDateFormat;
    System::UnicodeString LongDateFormat;
    System::UnicodeString TimeAMString;
    System::UnicodeString TimePMString;
    System::UnicodeString ShortTimeFormat;
    System::UnicodeString LongTimeFormat;
    _TFormatSettings__1 ShortMonthNames;
    _TFormatSettings__2 LongMonthNames;
    _TFormatSettings__3 ShortDayNames;
    _TFormatSettings__4 LongDayNames;
    _TFormatSettings__5 EraInfo;
    System::WideChar ThousandSeparator;
    System::WideChar DecimalSeparator;
    System::Word TwoDigitYearCenturyWindow;
    System::Byte NegCurrFormat;
    System::UnicodeString NormalizedLocaleName;
    static TFormatSettings __fastcall Create()/* overload */;
    static TFormatSettings __fastcall Create(unsigned Locale)/* overload */;
    static TFormatSettings __fastcall Create(const System::UnicodeString LocaleName)/* overload */;
    int __fastcall GetEraYearOffset(const System::UnicodeString Name);


Type Visibility Source Unit Parent
System.SysUtils System.SysUtils


TFormatSettings defines a thread-safe string formatting context.

TFormatSettings defines a data structure containing locale information used by the string formatting routine. Each member of TFormatSettings is equivalent to the global variable with the same name. A variable of type TFormatSettings defines a thread-safe context that formatting functions can use in place of the default global context, which is not thread-safe.

To create and use the thread-safe environment defined by TFormatSettings, follow these steps:

  1. Declare a variable of type TFormatSettings.
  2. Call TFormatSettings.Create to populate the TFormatSettings variable with locale information.
  3. Pass the TFormatSettings variable as the last parameter of the string formatting routine.

Each routine that accepts a TFormatSettings parameter is thread-safe, and is an overload of an equivalent function that refers to the global formatting variables.

Code Examples