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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow