Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


9.8. Listas de cadenas de texto: TStringList

En Free Pascal (pero no en Turbo Pascal) tenemos predefinido un tipo de datos que es una lista de cadenas de texto. En ella podemos guardar nuevos elementos al final (con Add), insertar en cualquier posición (Insert), saber el tamaño (Count), obtener un dato (corchetes o Get) e incluso guardar a fichero todo el contenido con una única orden (SaveToFile), cargar desde fichero (GetFromFile) y ordenar (Sort).

Para comenzar a usarlo deberemos usar dato := TStringList.Create y cuando terminemos deberemos liberar la memoria con Free.

Vamos a ver casi todo eso en un ejemplo:

(* STRLIST.PAS, Ejemplo de TStringList *)
(* Parte de CUPAS5, por Nacho Cabanes  *)

program StrList;

uses classes;

var
    lista: TStringList;
    dato: string;
    i: integer;

begin
    lista := TStringList.Create;
    repeat
        write('Introduce un dato (Intro para acabar): ');
        readLn(dato);
        if dato <> '' then
            lista.Add(dato);
    until dato = '';

    for i:= lista.Count-1 downto 0 do
        writeLn(lista[i]);

    writeLn('Ordenando alfabéticamente...');
    lista.Sort;

    writeLn('Y guardando en "lista.txt"...');
    lista.SaveToFile('lista.txt');
    
    lista.Free;
end.

Ejercicio propuesto 9.8.1: Crea un programa que permita al usuario guardar una lista de frases. El usuario introducirá tantas frases como desee, e indicará que ha terminado pulsando Intro sin ningún otro texto. En ese momento la lista se guardará a fichero ("frases.txt"). Finalmente, se le preguntará qué texto quiere buscar (por ejemplo, "hola") y se le responderá cuántas frases contienen ese texto. La ejecución terminará cuando se pulse Intro en vez de un texto a buscar.
Ejercicio propuesto 9.8.2: Crea una nueva versión del programa 9.8.1, en la que se lean inicialmente las frases que ya formaban parte del fichero "frases.txt", en caso de que este existiera.
Ejercicio propuesto 9.8.3: Crea una versión mejorada del programa 9.8.2, que muestre un menú que permita añadir, contar las frases que contengan un cierto texto, mostrar las frases que contengan un texto, mostrar todas las frases o terminar.
Ejercicio propuesto 9.8.4: Crea un programa que permita al usuario guardar una lista de números reales. El usuario introducirá tantos datos como desee (usando 99999 para terminar), y en ese momento se le mostrará la media de los valores, después todos los que están por encima de esa media (en una misma línea, separados por espacios en blanco) y finalmente todos los que están por debajo de esa media (en una nueva línea, también separados por espacios en blanco). Debes usar una lista de strings para guardar los datos.