Embarcadero Delphi
TStringListクラス
サーチ…
前書き
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を。