Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Matriz Para Leitura de Arquivo e separação de dados '|'


Ir à solução Resolvido por Fazzioni,

Posts recomendados

Fala guys, um bom dia a todos, preciso encontrar uma forma de utilizar matriz para percorrer um txt e separar os dados que estão divididos em '|', exemplo:

Conteúdo do .txt:

Uno | 2000 | Fiat

S10 | 2016 | Chevrolet

 

A ideia é rodar esses arquivos e jogar na matriz sem limites pois tem muito conteúdo além dessas duas linhas, queria fazer um Listbox com os nomes dos carros e quando for selecionado aparecer em dois label, o ano e a marca do carro.

Alguém poderia me dizer como fazer?

 

Link para o comentário
Compartilhar em outros sites

  • Solução

uma forma de fazer é copiar a função Split, muito comum no mundo do desenvolvimento web

 

neste exemplo, eu uso um TstringList para receber a linha e troco o caractere "|" por novas linhas, não é o modo mais eficiênte, mas é funcional:

 

usei no exemplo o componente Listview da (paleta win32)

var
  input : TStringList;

  Split_Temp : TStringList;
  i:integer;

  Column_count:Integer;
begin
try
  Column_count := 0;

  input := TStringList.Create;

  // inicilizar o arquivo 
  input.Add('Uno | 2000 | Fiat');
  input.Add('S10 | 2016 | Chevrolet');


  ListView1.ViewStyle := vsReport; // tipo de visualização da list

  Split_Temp:=TStringList.Create;
  for i := 0 to input.Count -1 do //ler linha por linha
  begin
    //a ideia é simples:
    //trocar o caractere "|" de cada linha por uma nova linha, não é a forma mais eficiênte, mas é funcional!
    Split_Temp.Text := StringReplace(input[i],'|',#13#10,[rfReplaceAll]);

    
    if Split_Temp.Count > 0 then
    with ListView1.Items.Add do //adiciona um novo item no listview
    begin
      Caption := Split_Temp[0];
      Split_Temp.Delete(0); // para não aparecer 2x na lista
      SubItems.AddStrings(Split_Temp); //adicionando todas as outras características no item do listview

      If Split_Temp.Count > Column_count then
      Column_count := Split_Temp.Count;
    end;

  end;

//adicionar as colunas na listview
for i:= 0 to Column_count do
with ListView1.Columns.Add do
Caption := 'Coluna: '+IntToStr(i);


finally
  FreeAndNil(input);
  FreeAndNil(Split_Temp);
end;


end;

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!