Embarcadero Delphi
TStringList klass
Sök…
Introduktion
TStringList är en ättling till TStrings-klassen för VCL. TStringList kan användas för att lagra och manipulera listan över strängar. Även om de ursprungligen var avsedda för strängar, kan alla typer av objekt också manipuleras med denna klass.
TStringList används ofta i VCL när syftet är där för att hålla en lista med strängar. TStringList stöder en rik uppsättning metoder som erbjuder hög anpassningsnivå och enkel hantering.
Följande exempel visar skapandet, tillägget av strängar, sortering, hämtning och frigöring av ett TStringList-objekt.
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 har en mängd olika användarfall inklusive strängmanipulation, sortering, indexering, nyckelvärdesparring och avgränsningsseparation bland dem.
Nyckelvärdeparring
Du kan använda en TStringList för att lagra Key-Value-par. Detta kan vara användbart om du till exempel vill lagra inställningar. En inställning består av en nyckel (inställarens identifierare) och värdet. Varje Key-Value-par lagras i en rad i StringList i Key = Value-format.
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;
I det här exemplet har stränglistan följande innehåll innan den förstörs:
1stName=John
LastName=Doe
City=New York
Obs om prestanda
Under huven utför TStringList
genom att raka genom alla objekt, söka efter separator i varje objekt och jämföra namndelen med den givna nyckeln. Inget behov av att säga att det påverkar prestandan enormt, så denna mekanism bör endast användas på icke-kritiska, sällan upprepade platser. I de fall prestanda är viktigt bör man använda TDictionary<TKey,TValue>
från System.Generics.Collections
som implementerar hash-tabellsökning eller för att hålla nycklar i sorterad TStringList
med värden lagrade som Object
därmed använda binär sökalgoritm.