TStringList-TStrings Tutorial/es

From Lazarus wiki
Revision as of 16:01, 24 March 2012 by Vincent (talk | contribs) (Text replace - "delphi>" to "syntaxhighlight>")

Deutsch (de) English (en) español (es) suomi (fi) français (fr) polski (pl) русский (ru)

TStringList

   TStringList (o TStrings) se parece mucho a un gran matriz dinámica o a un conjunto de cadenas (un conjunto de cadenas no es posible en FPC). ¡Será muy útil al programar y yo te voy a enseñar el uso básico de TstringList!

 program StrList;
 {$mode objfpc}
  uses Classes, SysUtils;
  var ListaCadenas: TstringList;
  begin
   ListaCadenas := TStringList.Create; // Esto es necesario cuando se utiliza esta clase (y la mayoría de las clases) ListaCadenas.Add('¡Algo de texto!');
   writeln('La lista de cadenas (tstringlist) contiene ' + IntToStr(ListaCadenas.Count) + ' cadena(s).');
   Readln;
 end.

   Este es un programa de consola simple que crea y agrega una cadena a una lista de cadenas. Ahora, he aquí algunas cosas que debes saber:

  • Create - Creará la lista de cadenas para modificar.
  • Count - Es un contador para el número de cadenas en la Lista.
  • Add - Permite añadir una cadena a la lista de cadenas. La función devolverá el índice de la cadena. Aquí es donde el contador viene muy bien.
  • Delete - Borra una cadena de la lista de cadenas. Debemos de saber que no debemos introducir la cadena, tenemos que introducir el índice de la cadena. Como he dicho: es como una matriz dinámica de lujo.
  • IndexOf - Devolverá el índice de la cadena en la lista. Si no lo encuentra, devuelve -1.
  • Clear - Borrará la lista completa

Ejemplo

   ¿Qué tal un ejemplo más jugoso, ¿eh?

 program StrList2;
  {$mode ObjFPC}
  uses Classes, SysUtils;
  var ListaCadenas: TstringList;
   C: String;
   Contador: Integer;
  begin
   ListaCadenas := TstringList.Create;
   Writeln('Prueba de lista de cadenas');
   repeat
    Writeln('Introduce la cadena a añadir');
    Readln(C);
    if (C = 'Terminar') then Halt;
    if not (C = '') then
     begin
      Contador := ListaCadenas.Add(C);
      Writeln('¡La cadena: ' + C + ' fue añadida!');
      Writeln('El índice es: ' + IntToStr(Contador)); // El contador siempre será el índice de la última adición.
     end
    else
     begin
      Writeln('No hay texto para añadir...');
     end;
   until (S = 'Terminar');
  end.

Usando archivos

   Cuando se utiliza TStringList tenemos dos procedimientos de manipulación de archivos: SaveToFile y LoadFromFile.

  • SaveToFile guardará todas las cadenas en la lista en un archivo.
  • LoadFromFile abrirá el archivo y agregará los datos del archivo a la cadena de la lista de cadenas.
 program StrListFile;
 {$mode objfpc}
 uses
 Classes, SysUtils;
 var
  ListaCadenas: TStringList;
 begin
  ListaCadenas := TStringList.Create;
  ListaCadenas.LoadFromFile('Algo_de_Texto_en_Archivo.txt');
  ListaCadenas.Add('Hola');
  ListaCadenas.SaveToFile('Algo_de_Texto_en_Archivo.txt');
 end.

   ¡Acabamos de abrir un archivo, hemos editado el texto y lo hemos guardado de nuevo¡

Comparación dinámica de matrices de cadenas

   TStringList es simplemente una versión avanzada, de objeto, de una matriz de cadena dinámica. Algunos métodos son análogos:

Operación                      Matriz de cadenas TStringList
Declaración de Variable ListaCadenas: array of string; ListaCadenas: TStringList;
Inicialización constructor implícito ListaCadenas := TStringList.Create
Dimensionar SetLength(ListaCadenas, X); ListaCadenas.Size := X;
Obtener dimensión X := Length(ListaCadenas); X := ListaCadenas.Size;
Añadir elemento SetLength(ListaCadenas, Length(ListaCadenas) + 1); ListaCadenas[Length(ListaCadenas) - 1] := X; ListaCadenas.Add(X);
Borrar item for I := Index to Length(ListaCadenas) - 2 do ListaCadenas[I] := ListaCadenas[I + 1]; SetLength(ListaCadenas, Length(ListaCadenas) - 1); ListaCadenas.Delete(Index);             
Eliminar todos los items SetLength(ListaCadenas, 0); ListaCadenas.Clear;
Terminación destructor implícito ListaCadenas.Free;

   Pero TStringList ofrece mucha mas funcionalidad que una simple estructura como la matriz dinámica.

Sigue aprendiendo

   Para aprender los diferentes procedimientos, funciones y propiedades, puedes ver Documentación de TStringList

   Si sientes que podría haber dejado algo fuera, 'modificalo a voluntad!'

   ¡Espero que sea de ayuda!