Ir ao conteúdo

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


Ir à solução Resolvido por Fazzioni,

Posts recomendados

Postado

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?

 

  • Solução
Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!