leitura de arquivo texto s/ delimitador

09/05/2008

0

Boa tarde a todos

Tenho um arquivo texto que é gerado para um programa Folha de Pagamento, e preciso ler esse arquivo no Delphi, porém esse arquivo não tem delimitador nenhum para final de linha. Espero que vcs possam me ajudar
Exemplo do arquivo que preciso ler
+00144106050800000000010393
+00144106050801000000010363
+00144106050802000000010393
+00144106050803000000010363
+00144206050804000000010393
+00144206050805000000010363
+00144206050806000000010363
+00144206050807000000010393 


Quero jogar esses dados (separados) em uma StringGrid, até aí eu consegui ler e gravar no StringGrid (usando Copy), mas sempre está retornando a mesma linha (a primeira)


Facc

Facc

Responder

Posts

09/05/2008

Joaoshi

Colega, talves ajude

A ideia é pegar o conteudo do arquivo texto e jogar no Memo, e ir lendo cada linha do Memo.

procedure TForm1.Button1Click(Sender: TObject);
var nLinha : Integer;
    SuaVariavel1, SuaVariavel2 : String;
     
begin
  Memo1.Lines.Clear;
  Memo1.Lines.LoadFromFile(´CaminhoDoArquivo.Texto´);
  For nLinha := 0 to Memo1.Lines.Count -1 do
    begin
      SuaVariavel1 := Copy(Memo1.Lines[nLinha],1,5);
      SuaVariavel2 := Copy(Memo1.Lines[nLinha],6,3);
    end;
  ShowMessage(´Acabou´);
end;


Espero ter ajudado.


Responder

09/05/2008

Facc

amigo, valeu pela dica, mas carregar no memo eu consegui...

o que quero é pegar akele arquivo e jogar numa stringgrid para tratar os dados, já identifiquei todos os campos e consegui fazer a quebra (fiz um For) mas só retorna a 1ª linha do arquivo.


Responder

10/05/2008

Joaoshi

Colega, neste caso (uma grande linha sem delimitador), você deve saber o tamanho de um ´registro ´ por exemplo:

+00144106050800000000010393 tem 27 caracteres

Fazer um for lendo a até o fim da string de 27 em 27 caracteres, e cada conjunto de 27 caracteres você pega os dados individuais.

Espero ter ajudado.


Responder

12/05/2008

Facc

Bom dia

Consegui resolver por parte...

  Memo1.Lines.Clear;
  Memo1.Lines.LoadFromFile(´C:\FolhaPgto\DADOS.TXT´);
  i := 0;
  sgrid.RowCount := Memo1.Lines.Count;
  while i <> Memo1.Lines.Count do
  begin
    if Copy(Memo1.Lines[i], 1, 3) = ´+00´ then
    begin
      sgrid.Cells[0, i] := ´E´
    end
    else
    begin
      sgrid.Cells[0, i] := ´S´
    end;
    sgrid.Cells[1, i+1] := Copy(Memo1.Lines[i], 4, 4);
    sgrid.Cells[2, i+1] := Copy(Memo1.Lines[i], 8, 6);
    sgrid.Cells[3, i+1] := Copy(Memo1.Lines[i], 14, 2);
    sgrid.Cells[4, i+1] := Copy(Memo1.Lines[i], 16, 12);
    Inc(i);
    Application.ProcessMessages;
  end;


Com essa função consegui pegar linha a linha como precisava, porém qndo jogo na StringGrid ela fica toda branca, sem dado nenhum dentro... Porém a contagem da linha tá real. Como resolvo isso?


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar