Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2022年09月18日] [更新 2022年09月18日] Delphi 一般・その他
   
TStringBuilder におけるメソッドチェーン
動作確認等 Windows 10 ビルド 19043 Pro 64 bit + Delphi XE5(UP2) Pro VCL-32
[整理番号 - 1190]







01_TStringBuilder におけるメソッドチェーン


TStringBuilder クラスでメソッドチェーンの機能を使用する例です.
メソッドチェーンは,メソッドの後に更にメソッドを実行する機能のことです.多用すると,コーディングの見通しが損なわれるかも知れません.


インスタンス名.メソッド1.メソッド2.メソッド3. ...




図1
[Button1] をクリック
  • 単なる文字列リストの作成
図2
[Button2] をクリック
  • 文字列リストを作成
  • 一部,以下のメソッドチェーンを実行
    AppendLine().Remove().Replace()
    ToString.Remove()
図3
[Button3] をクリック
  • 文字列の結合サンプル
  • 一部,以下のメソッドチェーンを実行
    Append().Remove().Replace()
    ToString.Remove()

リスト1
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//=============================================================================
//  TStringBuilder を使用した文字列リスト
//  AppendLine メソッドを使用
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
  LStrBuild : TStringBuilder;
begin
  Memo1.Lines.Clear;

  LStrBuild := TStringBuilder.Create;
  try
    LStrBuild.AppendLine('東京都');
    LStrBuild.AppendLine('神奈川県');
    LStrBuild.AppendLine('群馬県');
    LStrBuild.AppendLine('千葉県');
    LStrBuild.AppendLine('福島県');

    Memo1.Lines.Text := LStrBuild.ToString;
  finally
    FreeAndNil(LStrBuild);
  end;
end;

//=============================================================================
//  TStringBuilder におけるメソッドチェーン ( method chaining ) の例
//  AppendLine メソッド実行後に
//  Remove メソッドでインデックスが 5 ( 6 番目 ) から 2 文字削除して
//  Replace メソッドで文字列を置換
//  注 : 改行文字 ( CR と LF ) も文字
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LStrBuild : TStringBuilder;
begin
  Memo1.Lines.Clear;

  LStrBuild := TStringBuilder.Create;
  try
    LStrBuild.AppendLine('東京都');
    LStrBuild.AppendLine('神奈川県');
    LStrBuild.AppendLine('群馬県');
    LStrBuild.AppendLine('千葉県');
    LStrBuild.AppendLine('福島県').Remove(5, 2).Replace('群馬県', '兵庫県 西脇市');

    // 先頭から 3 文字削除
    Memo1.Lines.Text := LStrBuild.ToString.Remove(0, 3);
  finally
    FreeAndNil(LStrBuild);
  end;
end;

//=============================================================================
//  TStringBuilder を使用した文字列の結合とメソッドチェーンの例
//  Append メソッドを使用
//=============================================================================
procedure TForm1.Button3Click(Sender: TObject);
var
  LStrBuild : TStringBuilder;
begin
  Memo1.Lines.Clear;

  LStrBuild := TStringBuilder.Create;
  try
    LStrBuild.Append('東京都');
    LStrBuild.Append('神奈川県');
    LStrBuild.Append('群馬県');
    LStrBuild.Append('千葉県');
    LStrBuild.Append('福島県').Remove(5, 2).Replace('群馬県', '兵庫県 西脇市');

    // 先頭から 3 文字削除
    Memo1.Lines.Text := LStrBuild.ToString.Remove(0, 3);
  finally
    FreeAndNil(LStrBuild);
  end;
end;

end.