Embarcadero Delphi
Clase TStringList
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.