TStringList

TStringList は、文字列の保持と管理をします。

Sort
文字列をソートします。
Find
Find は、特定の文字列があるかどうかを調べます。特定の文字が見つからない場合は、False が返されます。また、文字列の添え字は、0 から始まります。Find はソートされたリストにのみ使用します。ソートされていないリストを調べる場合には、IndexOf を使用します。
IndexOf
ソートされていないリストに、特定の文字列があるかどうかを調べます。また、文字列の添え字は 0 から始まります。もし文字列が見つからない場合は、-1 が返ります。
AddObject
AddObject は、文字列とオブジェクトを関連付けて、それをリストに格納します。また、リストに保持されたオブジェクトはリストが破棄されてもオブジェクトは破棄されませんので、使い終わったら明示的に Free を呼んで破棄しなければなりません。また TStringList とは違い、TObjectList の場合は、TObjectList インスタンスが破棄されると、それ自身が保持しているオブジェクトも同時に破棄されます。
Move
Move は、リスト内の位置を変更します。
AddStrings
AddStrings はリストに、文字列をまとめて追加します。

Sort のサンプル △Top

procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer;
  list: TStringList;
begin
  list := TStringList.Create;

  list.Add('Home');
  list.Add('Academic');
  list.Add('Enterprise');
  list.Add('Edition');

  for i := 0 to list.Count-1 do
    ListBox1.Items.Add(list.Strings[i]);

  list.Sort; // ソート

  for i := 0 to list.Count-1 do
    ListBox2.Items.Add(list.Strings[i]);
    
  list.Free;
end;

Find のサンプル △Top

procedure TForm1.Button1Click(Sender: TObject);
var
  list: TStringList;
  index: Integer;
  i: Integer;
begin
  list := TStringList.Create;

  list.Add('Hello');
  list.Add('hoge');
  list.Add('Good');
  list.Add('Delphi');

  list.Sort; // Find は、ソートされたもののみ利用可
  if list.Find('hoge', index) then
    ShowMessage(IntToStr(index));

  for i := 0 to list.Count-1 do
    ListBox1.Items.Add(list.Strings[i]);

  list.Free;
end;

IndexOf のサンプル △Top

procedure TForm1.Button2Click(Sender: TObject);
var
  list: TStringList;
  index: Integer;
  i: Integer;
begin
  list := TStringList.Create;

  list.Add('Delphi');
  list.Add('coffee');
  list.Add('tea');
  list.Add('kylix');

  for i := 0 to list.Count-1 do
    ListBox1.Items.Add(list.Strings[i]);

  index := list.IndexOf('tea');
  if index <> -1 then
    ShowMessage('tea は' + IntToStr(index) + '番目にあります。');

  index := list.IndexOf('Hello'); // 文字列がない場合は、-1 が返る
  if index = -1 then
    ShowMessage('Hello は、ありません。');
    
  list.Free;
end;

AddObject のサンプル △Top

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

  TFruit = class(TObject)
  public
    procedure ShowFruit; virtual; abstract;
  end;

  TApple = class(TFruit)
  public
    procedure ShowFruit; override;
  end;

  TOrange = class(TFruit)
  public
    procedure ShowFruit; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TOrange }

procedure TOrange.ShowFruit;
begin
  ShowMessage('Orange');
end;

{ TApple }

procedure TApple.ShowFruit;
begin
  ShowMessage('Apple');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FruitList: TStringList;
  Apple, Orange: TFruit;
  index: Integer;
begin
  FruitList := TStringList.Create;
  Apple := TApple.Create;
  Orange := TOrange.Create;

  FruitList.AddObject('りんご', Apple);
  FruitList.AddObject('オレンジ', Orange);

  index := FruitList.IndexOfObject(Orange);
  if index <> -1 then
    (FruitList.Objects[index] as TFruit).ShowFruit;

  index := FruitList.IndexOf('りんご');
  if index <> -1 then
    (FruitList.Objects[index] as TFruit).ShowFruit;

  FruitList.Free;
  Apple.Free;
  Orange.Free;
end;

end.

Move のサンプル △Top

procedure TForm1.Button5Click(Sender: TObject);
var
  list: TStringList;
  i: Integer;
begin
  list := TStringList.Create;

  list.Add('Delphi 1');
  list.Add('Delphi 2');
  list.Add('Delphi 3');
  list.Add('Delphi 4');
  list.Add('Delphi 5');
  list.Add('Delphi 6');

  list.Move(1, 4); // 1 番目の項目を 4 番目に移動

  for i := 0 to list.Count-1 do
    ListBox1.Items.Add(list.Strings[i]);
    
  list.Free;
end;

AddStrings のサンプル △Top

procedure TForm1.Button6Click(Sender: TObject);
var
  list: TStringList;
begin
  list := TStringList.Create;

  list.Add('Button');
  list.Add('Label');
  list.Add('Form');
  list.Add('Panel');

  ListBox1.Items.AddStrings(list); // まとめて追加

  list.Free;
end;

up next
Last update: 2002/9/29