Delphi XEでSplitString関数が追加された。VBにあって、Delphiになかった関数で
個人的には気になってた関数です。(欲しかった関数です。)
で、ちょっとためしてみた。
以下、ソースコード
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);
}
//---------------------------------------------------------------------------