個人的には気になってた関数です。(欲しかった関数です。)
で、ちょっとためしてみた。
以下、ソースコード
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
StrUtils,Types;
procedure TForm1.Button1Click(Sender: TObject);
var
TestString : String;
SplitResult:TStringDynArray;
begin
TestString := 'フリーダム,ジャスティス,デストロイ,セイバー';
SplitResult := SplitString(TestString,',');
Label1.Caption := TestString;
for TestString in SplitResult do begin
ListBox1.Items.Add(TestString);
end;
end;
end.
Visual Basicライクで非常に簡単に使えます。
内部的には、FindDelimiter関数を使ってDelemeterをみつけ
Copy関数で部分文字列を切り出してます。
これなら、下位バージョンでも実装できそうですね。
ところでFindDelimiter関数は、いつから存在したのでしょうか?
個人的には、Delphiにはまだまだ知らない便利な関数が一杯ありそうです。
2010.09.10 山本隆の開発日記で紹介して頂いたので
調子にのってC++ Builderで書いてみました。
(C++は自信がないので、役に立つかどうかわかりませんが・・・)
//--------------------------------------------------------------------------- #include#include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { UnicodeString TestString = "イージス|バスター|デュエル|ブリッツ|ストライク"; LabeledEdit1->Text = TestString; TStringDynArray SplitResult = SplitString(TestString,"|"); for (int i = 0; i < SplitResult.Length; i ++) { ListBox1->Items->Add(SplitResult[i]); } SplitResult.set_length(0); } //---------------------------------------------------------------------------
2 件のコメント:
ListBox1.Items の DelimitedText を使えばすむと思いますがどうでしょう?
今までは、自作するか、ご指摘のような
メソッドを使っていましたが、文字列を分割するためだけに、クラスを生成するのは、どうかなぁ?というのがありまして、軽量な関数が欲しいと思っておりました。
コメントを投稿