System.AnsiStrings.Format
Delphi
function Format(const Format: AnsiString; const Args: array of const): AnsiString;
const AFormatSettings: TFormatSettings): AnsiString;
C++
extern DELPHI_PACKAGE System::AnsiString __fastcall Format(const System::AnsiString Format, const System::TVarRec *Args, const System::NativeInt Args_High)/* overload */;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | System.AnsiStrings.pas System.AnsiStrings.hpp |
System.AnsiStrings | System.AnsiStrings |
説明
Args
パラメータに指定された引数リストを、Format
パラメータで指定された書式文字列を使用して書式設定します。
書式文字列には、2 種類のオブジェクト(通常の文字と書式指定子)が含まれます。 通常の文字は、結果の文字列に逐一コピーされます。 書式指定子は、引数リストから引数を取得し、書式設定をそれぞれに適用します。
書式指定子の形式は次のとおりです。
% ["インデックス" :] [-] ["幅"] [. "精度"] "型"
書式指定子は、%
文字で始まります。 %
の後ろには、以下の要素がこの順序で指定されます。
- 引数のインデックス指定子
["インデックス" :]
(省略可能) - 左寄せ指示子
[-]
(省略可能) - 幅指定子
["幅"]
(省略可能) - 精度指定子
[. "精度"]
(省略可能) - 要求されている変換型の文字
"型"
変換文字
次に示す変換文字がサポートされます。
値 | 意味 |
---|---|
d |
10 進数です。 引数は整数値でなければなりません。 値は 10 進数の文字列に変換されます。 負の数値の場合、結果の文字列はマイナス記号で始まります。 書式文字列に精度指定子が含まれている場合は、結果の文字列に少なくとも指定された桁数がなければならないことを示しています。値の桁数が指定より少ない場合は、結果の文字列の左側がゼロで埋められます。 |
u |
符号なし 10 進数。 d と同様ですが、符号は出力されません。 |
e |
科学表記。 引数は浮動小数点値でなければなりません。 値は、 |
f |
固定。 引数は浮動小数点値でなければなりません。 値は、 |
g |
一般。 引数は浮動小数点値でなければなりません。 値は、固定形式または科学表記形式を使用して、できるだけ短い 10 進数の文字列に変換されます。 結果の文字列の有効桁数は、書式文字列の精度指定子で指定します。精度指定子がない場合は、デフォルト精度の 15 と見なされます。 末尾のゼロは結果の文字列から削除され、小数点は必要な場合にのみ表示されます。 値の中の小数点より上の桁数が指定された精度以下で、値が 0.00001 以上の場合、結果の文字列には、固定小数点形式が使用されます。 それ以外の場合は、結果の文字列に科学的形式が使用されます。 |
n |
数。 引数は浮動小数点値でなければなりません。 値は、 |
m |
金額。 引数は浮動小数点値でなければなりません。 値は、通貨金額を表す文字列に変換されます。 この変換は、グローバル変数 CurrencyString、CurrencyFormat、NegCurrFormat、ThousandSeparator、DecimalSeparator、および CurrencyDecimals によって制御されます。これらの変数はすべて、オペレーティング システムが提供するロケール設定によって初期化されます。 たとえば、通貨形式の設定は、Windows の [コントロール パネル|地域と言語のオプション] にある [地域オプション] タブの [標準と形式] セクションで設定できます。 書式文字列に精度指定子が含まれている場合は、グローバル変数 CurrencyDecimals によって指定される値を上書きします。 |
p |
ポインタ。 引数は、ポインタ値でなければなりません。 値は、 |
s |
文字列。 引数は、文字、文字列、または PChar 値でなければなりません。 文字列または文字が、書式指定子の代わりに挿入されます。 書式文字列に精度指定子がある場合は、その指定子で結果の文字列の最大長が指定されます。 引数がこの最大長より長い文字列であれば、その文字列は切り詰められます。 |
x |
16 進数。 引数は整数値でなければなりません。 値は、16 進数の文字列に変換されます。 書式文字列に精度指定子が含まれている場合は、結果の文字列が少なくとも指定された桁数の文字を含んでいる必要があることを示しています。 値の桁数が指定より少ない場合は、結果の文字列の左側がゼロで埋められます。 |
変換文字は大文字と小文字のどちらで指定しても構いません。結果は同じになります。
すべての形式について、小数点文字や桁区切り文字として使用される実際の文字は、グローバル変数の DecimalSeparator と ThousandSeparator から取得します。
インデックス、幅、および精度の指定子は、10 進数文字列を使って直接指定する("%10d"
など)か、アスタリスク文字を使って間接的に指定する("%*.*f"
など)ことができます。 アスタリスクを使用すると、引数リスト内の次の引数(整数値でなければなりません)が実際に使用される値になります。 たとえば、次の 2 つは同等です:
Format('%*.*f', [8, 2, 123.456])
Format('%8.2f', [123.456])
幅指定子は、変換におけるフィールドの最小幅を設定します。 結果の文字列がフィールドの最小幅に満たない場合は、空白を埋めてフィールド幅を増やします。 デフォルトでは、結果を右寄せして、値の前に空白を追加しますが、書式指定子に左寄せ指示子(幅指定子の前の "-"
文字)がある場合、結果は左寄せされて、値の後ろに空白を追加します。
インデックス指定子は、現在の引数リストのインデックスを指定された値に設定します。 引数リストにある最初の引数のインデックスは 0 です。 インデックス指定子を使用すると、同じ引数の形式指定を複数回行うことができます。 たとえば、
Format('%d %d %0:d %d', [10, 20])
produces the string:
'10 20 10 20'
Format 関数は、他の形式設定関数と組み合わせることができます。 たとえば、
S := Format('Your total was %s on %s', [FormatFloat('$#,##0.00;;zero', Total), FormatDateTime('mm/dd/yy', Date)]);
このコードでは、Format 関数には設定できない形式でカスタマイズするために、FormatFloat および FormatDateTime 関数が使用されています。
書式設定(区切り文字、小数点、日付/時刻形式など)のためにグローバル変数を使用する各文字列形式設定ルーチンは、TFormatSettings 型のパラメータであることが要求されるオーバーロードされた同等の変数を持っています。 この追加のパラメータは、グローバル変数ではなく形式設定情報を提供します。 詳細は、TFormatSettings のドキュメントを参照してください。
関連項目