Meu While não le a última linha do arquivo texto

Delphi

31/03/2017

Ele realiza o insert apenas até a linha 5 sendo que o arquivo possui 6 linhas.
Var
Arq : TextFile;
Arqorigem, Linha : String;
Str : TStringList;
Dia : string;
begin
AssignFile(Arq,Edit1.Text);
str := TStringList.Create;
Reset(Arq);
ReadLn(Arq, Linha);
while not eof(Arq) do Begin
try
str.StrictDelimiter := true;
str.Delimiter := '@';
str.DelimitedText := Linha;
DsInsere.DataSet.Open;
DsInsere.DataSet.Insert;
qInsere.FieldByName('UF').Value := Trim(Str[0]);
qInsere.FieldByName('LOCA_').Value  := Str[4];
qInsere.FieldByName('CEP8').Value := Str[6];
qInsere.FieldByName('NOME').Value  := Str[8];
qInsere.FieldByName('BAIINI').Value := Str[10];
qInsere.FieldByName('TIPO').Value := Str[12];
DsInsere.DataSet.Post;
except
ShowMessage('Erro ao importar arquivo.');
Abort;
end;
Readln(Arq, Linha);
end;
CloseFile(Arq);
ShowMessage('Arquivo importado com sucesso.');
end;
Rodrigo Oliveira

Rodrigo Oliveira

Curtidas 0

Melhor post

Daniel Araújo

Daniel Araújo

01/04/2017

Bom dia Rodrigo!

Se excluir o primeiro ReadLn (o que está fora do laço) e colocar o último ReadLn (o do final do laço) no início do while não dá certo?

Daniel Araújo
Sombra Tecnologia
Consultoria e Desenvolvimento de Sistemas
sombra.tecnologia@gmail.com
55 85 98135-5516
GOSTEI 1

Mais Respostas

Raylan Zibel

Raylan Zibel

31/03/2017

Segue:
Reset(Arq);
  //ReadLn(Arq, Linha);
  while not eof(Arq) do
  begin
    ReadLn(Arq, Linha);
    try
      Str.StrictDelimiter := true;
      Str.Delimiter := '@';
      Str.DelimitedText := Linha;
      Memo1.Lines.Add(Str[0] + ' | ' + Str[1]);
    except
      ShowMessage('Erro ao importar arquivo.');
      Abort;
    end;
    //Readln(Arq, Linha);
  end;
GOSTEI 1
Rodrigo Oliveira

Rodrigo Oliveira

31/03/2017

Obrigado Daniel era isso mesmo problema resovido !
GOSTEI 0
POSTAR