arquivo de texo

Delphi

14/12/2004

nesse código ele nao le a ultima linha do arquivo de texo, como eu faço para ele ler tambem a ultima linha?

AssignFile(arq, ´C:\texto.TXT´);
reset(arq);
readln(arq, linha);

while not eof (arq) do
begin
//comando
readln(arq,linha);
end;
ReWrite(Arq);
closefile(arq);


Joni

Joni

Curtidas 0

Respostas

Massuda

Massuda

14/12/2004

Experimentei rodar seu código (declarei arq como TextFile e linha como string) e não encontrei problema algum. Como você sabe que ele não está lendo a última linha?


GOSTEI 0
Joni

Joni

14/12/2004

Experimentei rodar seu código (declarei arq como TextFile e linha como string) e não encontrei problema algum. Como você sabe que ele não está lendo a última linha?


eu tenho um aquivos com cerca de 30 linhas,e mando ele ler as linha e jogar numa tabela, e a ultima linha do arquivo nao eh inserida na tabela


GOSTEI 0
Alfadesign

Alfadesign

14/12/2004

nesse código ele nao le a ultima linha do arquivo de texo, como eu faço para ele ler tambem a ultima linha? AssignFile(arq, ´C:\texto.TXT´); reset(arq); readln(arq, linha); while not eof (arq) do begin //comando readln(arq,linha); end; ReWrite(Arq); closefile(arq);


Realmente, pois o eof é a última linha, então quanto ele a encontra sairá do laço. faça o seguinte:

AssignFile(arq, ´C:\texto.TXT´);
reset(arq);
readln(arq, linha);

while not eof (arq) do
begin
//comando
readln(arq,linha);
end;
readln(arq,linha); //esta linha força a leitura da última linha
ReWrite(Arq);
closefile(arq);


GOSTEI 0
Alfadesign

Alfadesign

14/12/2004

nesse código ele nao le a ultima linha do arquivo de texo, como eu faço para ele ler tambem a ultima linha? AssignFile(arq, ´C:\texto.TXT´); reset(arq); readln(arq, linha); while not eof (arq) do begin //comando readln(arq,linha); end; ReWrite(Arq); closefile(arq);


Realmente, pois o eof é a última linha, então quanto ele a encontra sairá do laço. faça o seguinte:

AssignFile(arq, ´C:\texto.TXT´);
reset(arq);
readln(arq, linha);

while not eof (arq) do
begin
//comando
readln(arq,linha);
end;
readln(arq,linha); //esta linha força a leitura da última linha
ReWrite(Arq);
closefile(arq);


GOSTEI 0
Massuda

Massuda

14/12/2004

Imaginando que seu código para inserir no BD esteja onde você marcou com ´//comando´...
AssignFile(arq, ´C:\texto.TXT´); reset(arq); readln(arq, linha); while not eof (arq) do begin //comando readln(arq,linha); end; ReWrite(Arq); closefile(arq);
De fato a última linha não é processada... a última linha é lida pelo readln mas em seguida o while interrompe o loop porque atingiu o fim do arquivo e a última linha não é processada pelo ´//comando´. Melhor mudar para:
AssignFile(arq, ´C:\texto.TXT´);
reset(arq);
while not eof (arq) do begin
  readln(arq,linha);
  //comando
end;
ReWrite(Arq);
closefile(arq);



GOSTEI 0
Massuda

Massuda

14/12/2004

Melhor ainda :oops: :
AssignFile(arq, ´C:\texto.TXT´);
reset(arq);
while not eof (arq) do begin
  readln(arq,linha);
  if not eof(arq) then
    //comando
end;
ReWrite(Arq);
closefile(arq);



GOSTEI 0
POSTAR