Percorrer arquivo texto

Delphi

16/08/2006

Como faço para percorrer um arquivo texto? Tenho um arquivo XML, e preciso dar uma espécie de NOT ARQUIVO.EOF, e trocar o valor de um campo do tipo Integer para String, usando StringReplace. Como faço para percorrer todo o arquivo até o fim, dentro de um laço ou algo parecido, com uma variável do tipo TEXTFILE? Grato desde já.


Paulo

Paulo

Curtidas 0

Respostas

Marco Salles

Marco Salles

16/08/2006

porque voce não usa um ClientDataSet Para Isto ????

geralmente alogica é

cds1 -->>> arquivo xml original
cds2 -->>> definir os Tfield que voce quer
percorrer o cds na estrutura while not eof
carregar os valores de cd2
no final salve este arquivo do cds2 em cima do arquivo de leitura do cds1

Aqui um exemplo com dois campo aonde incialmente o campo Matricula estava definido como inteiro...

procedure TForm1.Button1Click(Sender: TObject);
begin
cds1.First;
while not cds1.Eof do
  begin
    cds2.Append;
    cds2Nome.AsString:=cds1Nome.AsString;
     cds2Matricula.AsString:=cds2Matricula.AsString;
     cds2.Post;
     cds1.Next;
  end;
  cds2.SaveToFile(´C:\podeApagarUrgenteja2\podeapagar.xml´,dfXML);
end;


espero que tenha ajudado..


GOSTEI 0
Paulo

Paulo

16/08/2006

Fiz assim:

procedure TForm1.BitBtn1Click(Sender: TObject); var nvo : TStringlist; s,caminho : String; i : Integer; begin caminho := ´C:\Remedio\TabelaRemedio.xml´; nvo := TStringList.Create; nvo.loadFromfile(caminho); for i := 0 to nvo.count-1 do begin s := nvo[i]; StringReplace(s,´´integer´´,´´string´ WIDTH=´9´´,[rfReplaceAll]); nvo[i] := s; end; nvo.saveToFile(caminho); FreeAndNil(nvo); end;

Só que não tá funcionando com o StringReplace. O que pode ser? No aguardo, grato!!!


GOSTEI 0
Marco Salles

Marco Salles

16/08/2006

paulo a resposta que eu lhe forneci foi baseada no seu outro tópico

http://forum.clubedelphi.net/viewtopic.php?t=79907

Tenho um arquivo XML. [b:307119e514]Preciso trocar um campo lá nele de Integer para string. [/b:307119e514]Como faço para abrir o arquivo XML e trocar o tipo de dado?


o mecansimo com cds troca o tipo de Campo e funciona mesmo , testado por mim no arquivo PodeApagar....

Porem nesse tópico , olhando com mais calma voce fala em :

e trocar o [b:307119e514]valor[/b:307119e514] de um campo do tipo Integer


afinal , voce quer trocar o Valor do Campo Ou po Tipo do campo...


GOSTEI 0
Paulo

Paulo

16/08/2006

Já consegui. Eis abaixo o que fiz.

procedure TForm1.BitBtn1Click(Sender: TObject); var nvo : TStringlist; s,caminho : String; begin caminho := ExtractFilePath(Application.ExeName)+´\mnemonicos.xml´; nvo := TStringList.Create; nvo.loadFromfile(caminho); s := nvo.Text; s := StringReplace(s,´´Integer´´,´´String´ WIDTH=´9´´,[rfReplaceAll]); nvo.Text := s; nvo.saveToFile(caminho); FreeAndNil(nvo); ModalResult := mrOk; end;


Assim funcionou e bem. Grato a todos!!!!


GOSTEI 0
POSTAR