2012年9月11日火曜日

Joinのオーバーロード

Joinのオーバーロードを試してみた。
但し、
class function Join(const Separator: string; const Values: IEnumerable): string; overload; static;
以外です。
詳細はプログラム中のコメントに記述しました。
以下、プログラム



  1. program Project3;  
  2.   
  3. {$APPTYPE CONSOLE}  
  4.   
  5. {$R *.res}  
  6.   
  7. uses  
  8.   System.SysUtils, System.Variants;  
  9.   
  10.   
  11. var  
  12.   s : string;  
  13.   a,b : single;  
  14.   s1,S2: string;  
  15.   elm : TArray<string>;  
  16.   //sh : TStringHelper;  
  17. begin  
  18.   try  
  19.     { TODO -oUser -cConsole メイン : ここにコードを記述してください }  
  20.    //sh : TStringHelper  
  21.   
  22.    //オーバーロードの1つ目  
  23.    //オープン配列を使用した形です。  
  24.    writeln('overload1:オープン配列');  
  25.    s := s.Join(',',['ミリー','ハイネ']);  
  26.    write('OK:');  
  27.    writeln(s);  
  28.    writeln;  
  29.   
  30.    s1 := '2.17'; s2 := '9.19';  
  31.    s := s.Join(',',[s1,s2]);  
  32.    write('OK:');  
  33.    writeln(s);  
  34.    writeln;  
  35.   
  36.    //文字列以外の型だとうまく出力できないようです。  
  37.    //空文字が出力されます。  
  38.    a := 2.17; b := 9.19;  
  39.    s := s.Join(',',[a,b]);  
  40.    write('NG');  
  41.    writeln(s);  
  42.    writeln;  
  43.   
  44.   
  45.    //オーバーロードの2つ目  
  46.    //文字列配列の結合開始位置(0基数)と数を指定  
  47.    //この例では、ニーナ,ベルト・サタンと表示します。  
  48.    //文字列配列作成の為にとりあえず分割  
  49.    s := 'ドッペ,パックン,ニーナ,ベルト・サタン,キノッピー';  
  50.    elm := s.Split([',']);  
  51.    writeln('overload2:開始位置と数を指定');  
  52.    writeln('元の文字列配列');  
  53.    for s1 in elm do  
  54.    begin  
  55.      writeln(s1);  
  56.    end;  
  57.    writeln('0基数で2番目の文字列から2個の文字列を結合');  
  58.    s := s.Join(',',elm,2,2);  
  59.    writeln(s);  
  60.    writeln;  
  61.   
  62.    readln;  
  63.   
  64.   
  65.   
  66.   except  
  67.     on E: Exception do  
  68.       Writeln(E.ClassName, ': ', E.Message);  
  69.   end;  
  70. end.  
  71.   
  72. </string>  

実行結果は

です。

0 件のコメント: