Copiar linha do txt ..
25/11/2005
0
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
Posts
25/11/2005
Marcio.theis
[url]http://forum.clubedelphi.net/viewtopic.php?t=70766[/url]
25/11/2005
Eric.miranda
esse delimitador | que ele fala, seria a minha ;
ou seja um separador de campos e não de linha..
obrigado
25/11/2005
Marcio.theis
25/11/2005
Emerson Nascimento
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]; Registro.CP01:= lista[1]; Registro.CP02:= lista[2]; 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.
25/11/2005
Eric.miranda
era exatamente isso que precisava..
mto obrigado mesmo..
fico te devendo essa..
T+
Eric :D
Clique aqui para fazer login e interagir na Comunidade :)