Fórum Meu While não le a última linha do arquivo texto #579587

31/03/2017

0

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

Responder

Post mais votado

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

Daniel Araújo

Daniel Araújo
Responder

Gostei + 1

Mais Posts

02/04/2017

Raylan Zibel

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;
Responder

Gostei + 1

03/04/2017

Rodrigo Oliveira

Obrigado Daniel era isso mesmo problema resovido !
Responder

Gostei + 0

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

Aceitar