TStringList no Delphi


O TStringList nada mais é do que uma lista de strings. Cada posição de uma StringList pode estar armazenado "N" caracteres, ou seja, uma string. Utiliza-se muito a StringList para evitar a leitura de um arquivo txt. Pois como a StingList é trabalhada em memória, sua agilidade é "N" vezes maior do que você varrer um txt por inteiro. 

Código:
Lista : TStringList;

Como percebemos, a TStringList é uma classe, e toda classe deve ser instanciada. Então, vamos instância a TStringList e inicia nossa variável. Código abaixo.
procedure AdicionaStr ( Str : string );
begin
   Lista.Add ( Str );
end;

Eu criei este método, pois não sei onde vocês pretende usar a lista e em que momento será necessário instância-la. Agora, vamos criar um método que adiciona uma string em um índice na nossa StringList. Código abaixo.
procedure TFPrincipal.miCopiarUmaLinhaGridClick(Sender: TObject);
begin
  CopiarUmaLinhaGrid(dbgridCDS, miExibirtitulo.Checked);
end;

Agora, vamos criar um método que irá retornar o índice na StringList onde se encontra uma determinada string. Caso não encontre, ele retorna - 1. 

function RetornaIndice ( str : string ) : integer;
begin
   Result := Lista.IndexOf ( str );
end; 

Como carregar em um StringList, um arquivo texto. Irá jogar em cada índice da StringList uma linha daquele txt. Isto facilita muito o nosso trabalho. Código abaixo.
Lista.LoadFromFile ( 'C:\Teste.txt' );

Após toda manipulação, é preciso salvar tudo que alteramos no txt novamente, correto ? Então... Código abaixo.
Lista.SaveToFile ( 'C:\Teste.txt' );

Agora vou mostrá-los como varremos um StringList. Código abaixo.
   for indice := 0 to Lista.Count - 1 do
      ShowMessage ( Lista.Strings [ indice ] );

Por fim, finalizamos destruindo nossa stringList após termos feito o que tinha que se fazer. Código abaixo.
   Lista.Free;
   Lista := nil;

2 comentários:

  1. Interessante.
    Como eu faço para deletar o conteúdo de uma célula da Lista E como faço para Alterar o conteúdo de uma célula da Lista?

    ResponderExcluir
    Respostas
    1. Tenta algo assim:

      Lista := TStringList.Create;
      try
      Lista.LoadFromFile('C:\Teste.txt');
      Lista.Delete(23); {23 e o exemplo da linha que deseja excluir}
      Lista.SaveToFile('C:\Teste.txt');
      finally
      Lista.Free;
      end;

      Excluir