Fórum Meu While está lendo apenas a primeira linha do meu arquivo txt ! #579584

31/03/2017

0

Meu while lê apenas a primeira linha do arquivo onde eu posso estar errando ?
procedure TForm1.Button1Click(Sender: TObject);
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

06/04/2017

Opa Rodrigo, tudo bem?

Eu fiz uma pequena adaptação aqui no seu código para testar o exemplo, mudei pouca coisa. Pelo que pude testar, o código está certinho. Será que o seu arquivo não está com apenas uma linha?

procedure TForm1.Button1Click(Sender: TObject);
Var
  Arq : TextFile;
  Arqorigem, Linha : String;
  Str : TStringList;
  Dia : string;
begin
  AssignFile(Arq,'d:\\chamado_forum.txt');
  str := TStringList.Create;
  Reset(Arq);
  ReadLn(Arq, Linha);
  str.StrictDelimiter := true;
  str.Delimiter := '@';
  while not eof(Arq) do
  Begin
  try
    str.DelimitedText := Linha;
    memo1.Lines.Add(Str[0] + Str[1] + Str[2] + Str[3]);
  except
    ShowMessage('Erro ao importar arquivo.');
    Abort;
  end;
    Readln(Arq, Linha);
  end;
  CloseFile(Arq);
  ShowMessage('Arquivo importado com sucesso.');
end;

Wesley Yamazack

Wesley Yamazack
Responder

Gostei + 1

Mais Posts

04/04/2017

Roberto Wutke

ele não está entrando no exception não?, a princípio parece estar correto, mas eu colocaria o try fora do while.. ficaria
Try
while
||
readln
end.
exception
end;

algo assim... seria melhor ter um try pra todo o while do que ter que fazer o try toda vez...
Responder

Gostei + 0

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

Aceitar