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の内部のソースを全くみなくても
テストコードを見て動作を確認することができ
特に終端文字列の扱いなどについても知ることができて
わかりやすいと思います。
オープン配列版作ってみました。
コメントを投稿