XEで追加されたほどSplitString使用頻度は多くないがたまに必要に
なることがある。
Help,ソースをざっくり見たところなさそうだったので実装してみた。
(といっても文字列を連結しただけですが・・・)
以下、ソースコード
- unit VbLikeStringUtil;
- interface
- uses
- StrUtils,Types;
- function JoinString(AStrings: TStringDynArray; Delemeter : String) : String;
- implementation
- uses
- SysUtils;
- function JoinString(AStrings: TStringDynArray; Delemeter : String) : String;
- var
- i : Longint;
- begin
- Result := '';
- for i := low(AStrings) to high(AStrings) do
- begin
- Result := Result + AStrings[i];
- if i < high(AStrings) then Result := Result + Delemeter;
- end;
- end;
- end.
実際の使用方法のサンプルは、こんな感じ
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Button1: TButton;
- Label1: TLabel;
- procedure Button1Click(Sender: TObject);
- private
- { Private 宣言 }
- public
- { Public 宣言 }
- end;
- var
- Form1: TForm1;
- implementation
- uses
- StrUtils,Types, VbLikeStringUtil;
- {$R *.dfm}
- procedure TForm1.Button1Click(Sender: TObject);
- var
- JoinItems : TStringDynArray;
- begin
- SetLength(JoinItems,5);
- JoinItems[0] := 'イージス';
- JoinItems[1] := 'ジャスティス';
- JoinItems[2] := 'ザク';
- JoinItems[3] := 'セイバー';
- JoinItems[4] := 'グフ';
- Label1.Caption := JoinString(JoinItems,'|');
- end;
- end.
2 件のコメント:
こんにちは。
Delフサです。
先日はありがとうございます。
JoinStringは、オープン配列パラメータを引数指定に使ってみてはどうでしょうか。
今の動的文字配列の引数渡しもできるし、
JoinString(['A', 'B', 'C'], '/')
という形式での渡し方もできると思います。
あと、実行結果を示す場合
Label1.Captionだと、動作させるまで結果はわかりませんが
Assert('イージス|ジャスティス|ザク|セイバー|グフ'=JoinString(JoinItems,'|'));
こんな風にテストコードも書いておいていただけますと
コード上で動作が確認できてよいのではないでしょうか。
JoinStringの内部のソースを全くみなくても
テストコードを見て動作を確認することができ
特に終端文字列の扱いなどについても知ることができて
わかりやすいと思います。
オープン配列版作ってみました。
コメントを投稿