Selecao DevMedia QUERO SER PRIME

Fórum Ler TAG em arquivo TXT #368804

04/03/2009

0

Olá Pessoal
preciso ler, apagar e gravar o conteúdo de um arquivo texto que tem a seguinte estrutura:

<MESTRE>
VALOR1
VALOR2
VALOR3
VALOR4
...
</MESTRE>

<DETALHE>
ITEM1
ITEM2
ITEM3
ITEM4
...
</DETALHE>

Gostaria de ler por exemplo todo o conteudo de <MESTRE> </MESTRE>
e depois apagar, também preciso gravar esse mesmo conteudo depois nesse arquivo.

Eu até conseguir ler com o seguinte código:

procedure TForm1.Button2Click(Sender: TObject);
Var
  LIsta: TStrings;
  posIni,PosFim: Integer;
  copyText: TStrings;
begin
  Lista := TStringList.Create;
  copyText := TStringList.Create;
  Lista.LoadFromFile(´C:\texto.txt´);

  posIni := 0;
  if  posIni > 0 Then
     PosFim := PosEx(´</MESTRE>´, Lista.Text, posIni+1)
  else
  begin
   posIni := pos(´<MESTRE>´, Lista.Text);
   posFim := PosEX(´</MESTRE>´, Lista.Text, posIni+1);
  end;

  copyText.Text := copy(Lista.Text, PosIni+1, posFim-(posIni+1));
  PosIni   := PosEx(´<MESTRE>´,Lista.Text, posFim+1);
  posFim   := PosEX(´</MESTRE>´,Lista.Text, PosIni+1);

  Lista.Free;
  List.Free;
end;


mais o restante não deu certo, alguém poderia me dar uma ajudinha na adaptação do código, ou até outra forma de fazer ?

Obrigado.

João Gabriel


Jgscarvalho

Jgscarvalho

Responder

Posts

05/03/2009

Marco Salles

se entendi :

procedure TForm1.Button1Click(Sender: TObject);
const
vTagi = ´<MESTRE>´;
vTagf = ´</MESTRE>´;
Arq = ´C:\texto.txt´;
Var
  LIsta: TStrings;
  posIni,PosFim: Integer;
begin
  Lista := TStringList.Create;
  Lista.LoadFromFile(Arq);
  posini:= pos(vTagi,lista.Text);
  if  posIni > 0 Then
    begin
     PosFim := PosEx(vTagf, Lista.Text, posIni+1);
     if posFim > 0 then
       begin
        Lista.Text:=Trim(copy(lista.Text,posfim+length(vTagf)+1,length(lista.Text)-posfim));
        Lista.SaveToFile(Arq);
       end;
    end;
  Lista.Free;
end;



Responder

Gostei + 0

06/03/2009

Jgscarvalho

Olá Marcos, Valeu pela contribuição.

Testei seu código não tive éxito, o código só ler a tag final </MESTRE>

vou reformular minha dúvida,
tenho um arquivo que está organizqado assim:

[list:683ed988c1]
<MESTRE>
VALOR1
VALOR2
VALOR3
VALOR4
...
</MESTRE>
[/list:u:683ed988c1]

Preciso ler essa tag depois exclui-lo do arquivo, também preciso incluir essa mesma tag em outro arquivo.

com o código que coloquei no post anterior, eu até consigo ler, mais o problema está em excluir do arquivo e incluir depois em outro arquivo.


Responder

Gostei + 0

06/03/2009

Marco Salles

hummmmmmmm

procedure TForm1.Button2Click(Sender: TObject);
const
vTagi = ´<MESTRE>´;
vTagf = ´</MESTRE>´;
Arq = ´C:\texto.txt´;
ArqSemTag=´C:\textoSemTag.txt´;
ArqSoTag=´C:\textoSoTag.txt´;
Var
  LIstaLerTag: TStrings;
  ListaExcluirTag:TStrings;
  posIni,PosFim,i: Integer;
begin
  ListaLerTag := TStringList.Create;
  ListaExcluirTag:=TStringList.Create;
  ListaLerTag.LoadFromFile(Arq);
  ListaExcluirTag.AddStrings(ListaLerTag);
  posini:= pos(vTagi,listaLerTag.Text);
  if  posIni > 0 Then
    begin
     PosFim := PosEx(vTagf, ListaLerTag.Text, posIni+1);
     if posFim > 0 then
       begin
        ListaLerTag.Text:=Trim(copy(listaLerTag.Text,posIni,posFim+length(vTagf)));

        //Preciso ler essa tag
         for i:=1 to ListaLerTag.Count - 2 do
            showmessage(ListaLerTag.Strings[i]);

        //exclui-lo do arquivo,
        ListaExcluirTag.Text:=
           Trim(copy(listaExcluirTag.Text,posfim+length(vTagf)+1,
                           length(listaExcluirTag.Text)-posfim));
        ListaExcluirTag.SaveToFile(ArqSemTag); //so repetir o Nome Do Arq

        //Inclusão da tag em outro arquivo... //digte o Nome do Aquivo
        ListaLerTag.SaveToFile(ArqSoTag);
       end;
    end;
  ListaLerTag.Free;
  ListaExcluirTag.Free;
end;



Responder

Gostei + 0

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

Aceitar