System.SysUtils.TFormatSettings

提供: Appmethod Libraries
移動先: 案内検索

Object Pascal

  TFormatSettings = record
  public
    type
      TEraInfo = record
        EraName: string;
        EraOffset: Integer;
        EraStart: TDate;
        EraEnd: TDate;
      end;
  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;
{$ENDIF}
    class function AdjustLocaleName(const LocaleName: string): string; static;
    class function TranslateDateFormat(Locale: TLocaleID; LocaleType: Integer;
      const Default: string; const Separator: Char): string; static;
  public
    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;
    class function Invariant: TFormatSettings; static;
    function GetEraYearOffset(const Name: string): Integer;
  end;

C++

struct DECLSPEC_DRECORD TFormatSettings
{
public:
    struct DECLSPEC_DRECORD TEraInfo
    {
    public:
        System::UnicodeString EraName;
        int EraOffset;
        System::TDate EraStart;
        System::TDate EraEnd;
    };
private:
    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;
private:
    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);
public:
    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 */;
    static TFormatSettings __fastcall Invariant();
    int __fastcall GetEraYearOffset(const System::UnicodeString Name);
};

プロパティ

種類 可視性 ソース ユニット
record
struct
public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils


説明

TFormatSettings では、スレッドセーフな文字列書式設定コンテキストを定義しています。

TFormatSettings では、文字列書式設定ルーチンで使用するロケール情報を含むデータ構造を定義しています。 TFormatSettings の各メンバは、同じ名前のグローバル変数と同等です。 TFormatSettings 型の変数にはスレッドセーフなコンテキストが定義されており、書式設定関数では、スレッドセーフではないデフォルトのグローバル コンテキストの代わりにこのコンテキストを使用することができます。

TFormatSettings で定義されたスレッドセーフな環境を作成して使用する手順は以下のとおりです。

  1. TFormatSettings 型の変数を宣言します。
  2. TFormatSettings.Create を呼び出して、TFormatSettings 変数にロケール情報を設定します。
  3. TFormatSettings 変数を文字列書式設定ルーチンの最後のパラメータとして渡します。

TFormatSettings パラメータを受け取るルーチンはどれも、スレッドセーフであり、グローバルな書式設定変数を参照する同等の関数をオーバーロードしています。

コード サンプル