Copiar linha do txt ..

25/11/2005

Pessoal estou com um problema e queria a ajuda de vcs..

preciso ler um arquivo texto sendo que
os campos são separados por ;
até aí tranquilo.

mas o critério de linha que é estranho. ele me diz que uma linha começa
com ´ e termina com ´ então no caso teria que adaptar meu código para fazer isso..
vcs podem me dar uma mão em mais essa.. estou com o seguinte codigo

procedure TForm1.Button1Click(Sender: TObject);
var vArquivo :TextFile;
Linha: String;
Registro: TRegistro;
begin
AssignFile(vArquivo, ´C:\ARQUIVO1.TXT´);
Reset(vArquivo);
While not eof(vArquivo) do
begin
Readln(vArquivo,Linha);
Registro.CP00:= Copy(Linha,1,Pos(´;´,Linha)-1);
Delete(Linha,1,Pos(´;´,Linha));
edit1.text:= Registro.CP00;
Registro.CP01:= Copy(Linha,1,Pos(´;´,Linha)-1);
Delete(Linha,1,Pos(´;´,Linha));
edit2.text:= Registro.CP01;
Registro.CP02 := Copy(Linha,1,Pos(´;´,Linha)-1);
edit3.text:= Registro.CP02;
end;
Closefile(vArquivo);

end;


obrigado


Eric.miranda

Respostas

25/11/2005

Marcio.theis

Veja se este post não pode lhe ajudar:
[url]http://forum.clubedelphi.net/viewtopic.php?t=70766[/url]


Responder Citar

25/11/2005

Eric.miranda

Obrigado,pela dica, mas não seria o meu caso..

esse delimitador | que ele fala, seria a minha ;
ou seja um separador de campos e não de linha..
obrigado


Responder Citar

25/11/2005

Marcio.theis

Bom... No caso seria uma pequena adaptação que se faria, mas tudo bem...


Responder Citar

25/11/2005

Emerson

fiz essa ´gambiarra´:
procedure TForm1.Button1Click(Sender: TObject);
var
  vArquivo :TextFile;
  Linha, LinhaAux: String;
  Registro: TRegistro;
  posicao: integer;
  lista: tstringlist;
begin
  AssignFile(vArquivo, ´C:\ARQUIVO1.TXT´);
  Reset(vArquivo);
  Readln(vArquivo,Linha);

  lista := tstringlist.Create;
  lista.Delimiter := ´;´;

  while (linha<>´´) or not eof(vArquivo) do
  begin
    LinhaAux := Linha;
    posicao := pos(´"´,Linhaaux); // inicio da linha
    delete(linhaaux,posicao,1); // apaga a aspas

    while not eof(vArquivo) and (pos(´"´,LinhaAux)=0) do
    begin
      Readln(vArquivo,Linha);
      LinhaAux := LinhaAux+Linha;
    end;
    posicao := pos(´"´,Linhaaux); // fim da linha
    if posicao > 0 then
    begin
      linha := copy(linhaaux,posicao+1,length(linhaaux));
      linhaaux := copy(linhaaux,1,posicao-1);
    end
    else
      linha := ´´;

    lista.DelimitedText := linhaaux;

    Registro.CP00:= lista[0&93;;
    Registro.CP01:= lista&91;1&93;;
    Registro.CP02:= lista&91;2&93;;

    edit1.text:= Registro.CP00;
    edit2.text:= Registro.CP01;
    edit3.text:= Registro.CP02;

    //essas duas linhas abaixo são somente para visualização
    //pode excluí-las
    application.processmessages;
    sleep(180);
  end;
  Closefile(vArquivo);
  lista.free;
end;


funcionou num arquivo com esse texto:
"teste1;hahaha1;seila1""teste2;ha
haha2;seila2""teste3;hahaha3;seil
a3""teste4;hahaha4;seila4""teste5
;hahaha5;seila5"


ou com esse:
"teste1;hahaha1;seila1""teste2;hahaha2;seila2""teste3;hahaha3;seila3""teste4;hahaha4;seila4""teste5;hahaha5;seila5"


se você puder passar algumas linhas do seu arquivo texto essa rotina poderá ser melhorada.


Responder Citar

25/11/2005

Eric.miranda

Pô.. valeu mesmo emerson.en
era exatamente isso que precisava..

mto obrigado mesmo..
fico te devendo essa..

T+
Eric :D


Responder Citar