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