サーチ…


前書き

TStringListは、VCLのTStringsクラスの子孫です。 TStringListは、文字列のリストの格納と操作に使用できます。当初は文字列を対象としていましたが、このクラスを使用して任意のタイプのオブジェクトを操作することもできます。

TStringListは、文字列のリストを維持する目的がある場合に、VCLで広く使用されています。 TStringListは、高度なカスタマイズと操作の容易さを提供する豊富なメソッドセットをサポートしています。

次の例は、TStringListオブジェクトの作成、文字列の追加、並べ替え、取得および解放を示しています。

procedure StringListDemo;
var 
   MyStringList: TStringList;
   i: Integer;

Begin

   //Create the object
   MyStringList := TStringList.Create();
   try
      //Add items
      MyStringList.Add('Zebra');
      MyStringList.Add('Elephant');
      MyStringList.Add('Tiger');

      //Sort in the ascending order
      MyStringList.Sort;

      //Output 
      for i:=0 to MyStringList.Count - 1 do
        WriteLn(MyStringList[i]);
   finally
      //Destroy the object
      MyStringList.Free;
   end;
end;

TStringListには、文字列の操作、ソート、索引付け、キーと値のペアリング、区切り文字の区切りなど、さまざまなユーザーのケースがあります。

Key-Valueペアリング

TStringListを使用すると、Key-Valueのペアを格納できます。これは、たとえば設定を保存する場合に便利です。設定は、キー(設定の識別子)と値で構成されます。各キーと値のペアは、Key = Value形式のStringListの1行に格納されます。

procedure Demo(const FileName: string = '');
var
   SL: TStringList;
   i: Integer;
begin
     SL:= TStringList.Create;
     try
        //Adding a Key-Value pair can be done this way
        SL.Values['FirstName']:= 'John';   //Key is 'FirstName', Value is 'John'
        SL.Values['LastName']:= 'Doe';   //Key is 'LastName', Value is 'Doe'

        //or this way
        SL.Add('City=Berlin');  //Key ist 'City', Value is 'Berlin'

        //you can get the key of a given Index
        IF SL.Names[0] = 'FirstName' THEN
         begin
              //and change the key at an index
              SL.Names[0]:= '1stName';  //Key is now "1stName", Value remains "John"
         end; 
      
        //you can get the value of a key
        s:= SL.Values['City']; //s now is set to 'Berlin'

        //and overwrite a value 
        SL.Values['City']:= 'New York';

        //if desired, it can be saved to an file
        IF (FileName <> '') THEN
         begin
              SL.SaveToFile(FileName);
         end;
     finally
        SL.Free;
     end;
end;

この例では、StringListは破棄される前に次の内容を持っています。

1stName=John
LastName=Doe
City=New York

パフォーマンスに関する注意

フードの下では、 TStringListは、すべてのアイテムを直線的にループし、各アイテム内のセパレータを検索し、名前の部分を指定されたキーと比較することによってキー検索を実行します。パフォーマンスに大きな影響を及ぼしているとは言い難いので、このメカニズムは重要ではなく、まれに繰り返される場所でのみ使用する必要があります。パフォーマンスの問題の場合には、一つは使うべきTDictionary<TKey,TValue>からSystem.Generics.Collectionsハッシュテーブルの検索やソートのキー保つために実装TStringListとして格納された値とObjectこのようにバイナリ検索アルゴリズムを利用-sを。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow