この記事ではDelphiの文字列リスト操作クラスのTStringListでよく使うパターンを列挙しました。
#まずはこれが基本ですね
TStringListに限ったことではないですがObjectを操作する場合、try, finallyでcreateしたら必ずfreeされるようにしておきます。
uses
Classes;
var
sl:TStringList;
begin
sl := TStringList.Create;
try
//ここでいろいろ処理
finally
sl.Free;
end;
#Add, Delete
var
sl:TStringList;
begin
sl := TStringList.Create;
try
sl.Add('1');
sl.Add('2');
sl.Delete(0); //0番目を削除
finally
sl.Free;
end;
#Iterate
var
sl:TStringList;
i:integer;
begin
sl := TStringList.Create;
try
for i := 0 to sl.Count - 1 do begin
WriteLn(sl[i]);
end;
finally
sl.Free;
end;
#カンマ区切りテキスト
var
sl:TStringList;
i:integer;
begin
sl := TStringList.Create;
try
sl.CommaText := 'a,b,c,d';
WriteLn(sl[0]); // a
WriteLn(sl[1]); // b
WriteLn(sl[2]); // c
WriteLn(sl[3]); // d
sl.Add('e');
WriteLn(sl.CommaText); //a,b,c,d,e
finally
sl.Free;
end;
#Delimiterを指定すれば、タブ区切りテキストなども操作可能
var
sl:TStringList;
i:integer;
begin
sl := TStringList.Create;
try
sl.Delimiter := #9;
sl.CommaText := 'a#9b#9c#9d';
WriteLn(sl[0]); // a
WriteLn(sl[1]); // b
WriteLn(sl[2]); // c
WriteLn(sl[3]); // d
sl.Add('e');
WriteLn(sl.CommaText); //a#9b#9c#9d#9e
finally
sl.Free;
end;
#IndexOfで要素の位置(0オリジン)を取得
'''delphi
var
sl:TStringList;
i:integer;
begin
sl := TStringList.Create;
try
sl.Add('a');
sl.Add('b');
sl.Add('c');
WriteLn(sl.IndexOf('a')); // 0
WriteLn(sl.IndexOf('b')); // 1
WriteLn(sl.IndexOf('c')); // 2
WriteLn(sl.IndexOf('xxx')); // -1
finally
sl.Free;
end;
'''
#連想配列
var
sl:TStringList;
i:integer;
begin
sl := TStringList.Create;
try
sl.Values['a'] := '1';
sl.Values['b'] := '2';
sl.Values['c'] := '3';
for I := 0 to sl.Count - 1 do begin
WriteLn(sl.Names[i]); //a
WriteLn(sl.ValueFromIndex[i]); //1
WriteLn(sl[i]); //a=1
end;
WriteLn(sl.IndexOfName('a')); //0
finally
sl.Free;
end;