■無料ホームページスペース■

形式文字列


以下はDelphi6のHELPの内容です。

形式文字列は,汎用の文字列形式ルーチンに必要な形式を指定します。

説明

文字列形式ルーチンに渡される形式文字列には,リテラル文字と形式指定子の 2 種類のオブジェクトが含まれます。リテラル文字はそのまま結果の文字列にコピーされます。形式指定子は引数リストから引数を取り出し,その引数に形式を適用します。 形式指定子の構文を次に示します。

"%" [index ":"] ["-"] [width] ["." prec] type

形式指定子は % 文字で開始し,その後に次の各部を順に指定します。変換型文字 type 以外は省略可能です。

  • 引数のオフセットゼロのインデックス指定子(つまり,最初の項目がインデックス 0) [index ":"]
  • 左揃えインジケータ ["-"]
  • 幅指定子 [width]
  • 精度指定子 ["." prec]
  • 変換型文字 type

    次の表1、表2に type に指定できる値を示します。

    表1 [引数が整数値]
    指定子表示
    d10 進数。引数は整数値でなくてはならない。この値は 10 進数に変換される。形式文字列に精度指定子が含まれる場合,結果の文字列は指定された桁数以上でなくてはならない。指定された桁数より少ないときは,結果の文字列の左側にゼロが埋め込まれる
    u符号なし 10 進数。'd' と似ているが,符号は出力されない
    x16 進数。引数は整数値でなくてはならない。この値は 16 進数の文字列に変換される。形式文字列に精度指定子が含まれる場合,結果の文字列は指定された桁数以上でなくてはならない。指定された桁数より少ない場合,結果の文字列の左側にはゼロがパディングされる


    表2 [引数が浮動小数点値]
    指定子表示
    e指数。引数は浮動小数点値でなくてはならない。この値は "-d.ddd...E+ddd" 形式の文字列に変換される。値が負ならば先頭に負符号が付き,小数点の左側に必ず 1 桁表示される。合計桁数(小数点の左側の桁も含まれる)は,形式文字列の精度指定子によって与えられる。精度指定子を指定しない場合,デフォルトの精度は 15 桁である。結果の文字列の指数文字 E の右側には,正符号または負符号と 3 桁以上の数が表示される
    f固定小数点。引数は浮動小数点値でなくてはならない。この値は "-ddd.ddd..." 形式の文字列に変換される。値が負のときは,結果の文字列の先頭に負符号が付く。小数点の右側の桁数は形式文字列の精度指定子によって示される。精度指定子を指定しない場合,デフォルトの精度は 2 桁である
    g汎用表現。引数は浮動小数点値でなくてはならない。この値は固定小数点表現または指数表現を使って,できるだけ短い 10 進数に変換される。結果の文字列の有効桁数は形式文字列の精度指定子によって示される。精度指定子を指定しない場合,デフォルトの精度は 15 桁である。.結果の文字列の末尾部分のゼロは削除され,必要な場合だけ小数点が表示される。小数点の左側の桁数が指定された桁数以下で値が 0.00001 以上の場合,結果の文字列では固定小数点表現が使われる。それ以外の場合は指数表現が使われる
    n数値表現。引数は浮動小数点値でなくてはならない。この値は "-d, ddd, ddd.ddd" 形式の文字列に変換される。結果の文字列に 3 桁ごとの区切り文字が含まれない場合,"n" 形式は "f" 形式に対応する
    m金額。引数は浮動小数点値でなくてはならない。この値は通貨量を表す値に変換される。この変換は,CurrencyString,CurrencyFormat,NegCurrFormat,ThousandSeparator,DecimalSeparetor,CurrencyDecimals の各グローバル変数によって制御され,そのすべては Windows のコントロールパネルの[各国対応]にある[通貨の形式]で初期化する。形式文字列に精度指定子が含まれる場合,グローバル変数 CurrencyDecimal で与えられた値を精度指定子がオーバーライドする

    変換文字には大文字も小文字も使えますが,結果は同じです。

    すべての浮動小数点形式で使われる小数点または 3 桁ごとの区切り文字は,グローバル変数 DecimalSeparator および ThousandSeparator から取得されます。

    インデックス指定子,幅指定子,精度指定子は "%10d" のように 10 進数の文字列で直接指定することも,"%*.*f" のようにアスタリスクで間接的に指定することもできます。アスタリスクを使う場合,引数リスト内の次の引数(整数値)が実際に使われる値です。例を次に示します。

    Format('%*.*f', [8, 2, 123.456])

    これは次の形式指定子と同じです。

    Format('%8.2f', [123.456])

    幅指定子は変換時の最小フィールド幅を設定します。結果の値が最小フィールド幅より小さい場合でも,指定されたフィールド幅が確保されます。デフォルトでは,そのフィールドに値が右寄せで表示されます。形式指定子に左揃えインジケータ(幅指定子の先頭の "-")が指定されている場合は,そのフィールドに値が左寄せで表示されます。

    インデックス指定子は,現在の引数リストインデックスを指定の値に設定します。引数リストの最初の引数のインデックスは 0 です。インデックス指定子を使うと,同じ引数を繰り返して指定できます。たとえば,"Format('%d %d %0:d %d,[10, 20])" のように指定すると,'10 20 10 20' という文字列が生成されます。

    注意

    インデックス指定子を設定すると,その設定は以降のすべての形式設定に影響します。つまり,Format('%d %d %d %0:d %d', [1, 2, 3, 4]) は「1 2 3 1 4」ではなく「1 2 3 1 2」を返します。前者の結果を取得するには,Format('%d %d %d %0:d %3:d', [1, 2, 3, 4]) を使う必要があります。



    [例1]

    var
      s1, s2 : String;
      i, j, k : Integer;
      r: Real;
    
    begin
      i:=10; j:=100;                    {結果}
      FormatInt('%d',[i]));             {10}
      FormatInt('%3d',[i]));            { 10}
      FormatInt('%.3d',[i]));           {010}
      FormatInt('%03d',[i]));           { 10}
      FormatInt('Edit%d',[i]));         {Edit10}
      FormatInt('\%3.3d.',[i]));        {\010.}
      FormatInt('%d%%',[i]));           {10%}
      FormatInt(':%d',[i]));            {:10}
      FormatInt('XY%.3d',[i]));         {XY010}
    
      r:=i;
      FormatInt('%f',[r]));             {10.00}
      FormatInt('%.0f',[r]));           {10}
      FormatInt('%4.2f',[r]));          {10.00}
      FormatInt('%2.3f ',[r]));         {10.000}
      FormatInt('%3.1f 倍',[r]));       {10.0 倍}
    
      FormatInt('%n',[r]));             {10.00}
      FormatInt('%.0n',[r]));           {10}
      FormatInt('%.0n',[r]));           {10}
      FormatInt('%10.0n',[r]));         {        10}
    
      FormatInt('%m',[r]));             {\10}
      FormatInt('%12m',[r]));           {         \10}
    
      FormatInt('%.4x',[i]));           {000A}
      FormatInt('%4X',[i]));            {   A}
      FormatInt('is 0x%.4x',[i]));      {is 0x000A}
      FormatInt('$%02X',[i]));          {'$ A'}
    
      r:=10.12345;
      FormatInt('%f',[r]));             {10.12}
      FormatInt('%.0f',[r]));           {10}
      FormatInt('%4.2f',[r]));          {10.12}
      FormatInt('%2.3f ',[r]));         {10.123}
      FormatInt('%3.1f 倍',[r]));       {10.1 倍}
      FormatInt('%.7d  %f',[7,1.234])); {0000007  1.23}
      FormatInt('%n',[r]));             {10.12}
      FormatInt('%.0n',[r]));           {10}
      FormatInt('%*.*n',[i,k,r]));      {     10.12}
      FormatInt('%.0n',[r]));           {10}
      FormatInt('%10.0n',[r]));         {        10}
      FormatInt('%m',[r]));             {\10}
      FormatInt('%12m',[r]));           {         \10}
      Readln;
    
      FormatFloat('0##',i));         {010}
      FormatFloat('#,##0',i));       {10}
      FormatFloat('0000',i));        {0010}
      FormatFloat('#,###',i));       {10}
      FormatFloat('###.0',i));       {10.0}
    
      FormatFloat('0##',r));         {010}
      FormatFloat('#,##0',r));       {10}
      FormatFloat('0000',r));        {0010}
      FormatFloat('#,###',r));       {10}
      FormatFloat('###.0',r));       {10.1}
    




  • [Home] [ (´д`)Edit3Menu]
    ■お 得情報盛りだくさん
    ■高性能レンタルサーバ