Array
(
)

Copiar linha do txt ..

Eric.miranda
   - 25 nov 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


Marcio.theis
   - 25 nov 2005

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


Eric.miranda
   - 25 nov 2005

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


Marcio.theis
   - 25 nov 2005

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


Emerson
   - 25 nov 2005

fiz essa ´gambiarra´:
#Código

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:
#Código
"teste1;hahaha1;seila1""teste2;ha
haha2;seila2""teste3;hahaha3;seil
a3""teste4;hahaha4;seila4""teste5
;hahaha5;seila5"


ou com esse:
#Código
"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.


Eric.miranda
   - 25 nov 2005

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

mto obrigado mesmo..
fico te devendo essa..

T+
Eric :D