Buscar..


Introducción

TStringList es un descendiente de la clase TStrings del VCL. TStringList se puede utilizar para almacenar y manipular la lista de cadenas. Aunque originalmente estaba destinado a cadenas, cualquier tipo de objetos también se pueden manipular usando esta clase.

TStringList se usa ampliamente en VCL cuando el propósito es mantener una lista de cadenas. TStringList admite un amplio conjunto de métodos que ofrecen un alto nivel de personalización y facilidad de manipulación.

El siguiente ejemplo muestra la creación, adición de cadenas, clasificación, recuperación y liberación de un objeto 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 tiene una variedad de casos de usuarios que incluyen manipulación de cadenas, clasificación, indexación, emparejamiento clave-valor y separación de delimitadores entre ellos.

Emparejamiento clave-valor

Puede usar una TStringList para almacenar pares clave-valor. Esto puede ser útil si desea almacenar configuraciones, por ejemplo. Una configuración consiste en una clave (el identificador de la configuración) y el valor. Cada par clave-valor se almacena en una línea de StringList en el formato clave = valor.

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;

En este ejemplo, la lista de cadenas tiene el siguiente contenido antes de que se destruya:

1stName=John
LastName=Doe
City=New York

Nota sobre el rendimiento

Bajo el capó, TStringList realiza una búsqueda de claves haciendo un bucle directo a través de todos los elementos, buscando un separador dentro de cada elemento y comparando la parte del nombre con la clave dada. No es necesario decir que tiene un gran impacto en el rendimiento, por lo que este mecanismo solo debe utilizarse en lugares no críticos, que rara vez se repiten. En los casos en los que el rendimiento es importante, se debe usar TDictionary<TKey,TValue> de System.Generics.Collections que implementa la búsqueda de tablas hash o para mantener las claves ordenadas en TStringList con los valores almacenados como Object , utilizando el algoritmo de búsqueda binaria.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow