leitura de arquivo texto s/ delimitador
09/05/2008
0
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
Posts
09/05/2008
Joaoshi
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.
09/05/2008
Facc
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.
10/05/2008
Joaoshi
+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.
12/05/2008
Facc
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?
Clique aqui para fazer login e interagir na Comunidade :)