Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

R_Kder

Localização de texto no TMemo

Recommended Posts

Ola Pessoal,Estou finalizando um software e estou tendo dificuldade em conseguir localizar e copiar um texto em um Tmemo.Tenho um texto lá já, é um XML, preciso chegar até a tag e copiar o conteúdo dela para uma variavel:<titulo>TESTE</titulo>Alguma sugestão?Obrigado!:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a sua dificuldade???Seja um pouco mais específico...que ai da pra ter uma noção melhor!!!Se possível poste o code que já fez para podermos ter uma noção!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está sendo identificar as tags e copiar somente o conteúdo delas, pois o tamanho do texto varia de uma para outra.<titulo>TESTE</titulo>To tentando identificar o ">" depois ir até o próximo "<" e contar os caracteres entre um e outro, mas nao ta dando muito certo.Não tenho muita experiência com Delphi, ai me enrolo um pouco nesse tipo de coisa. :DValeu[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pega uma string, certo?

 

Para saber a posição de um determinado caracter nela utilize o POS (para saber mais use a busca do forum)

 

e ai você faz um novo Copy, Copiando da posição do > + 1 até a posição do segundo <...

 

 

é isso aew! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já precisei de algo como você precisa, criei uma function que faz esta busca:

 

function TForm1.BuscaEntreTags(tagIni, tagFim: string; richEdit: TRichEdit): string;var   posIni, posFim: integer;   ret: string;beginret:='';//Verifica se existe as tagsif ((StrPos(PChar(richEdit.Text),PChar(tagIni)) <> nil) and (StrPos(PChar(richEdit.Text),PChar(tagFim)) <> nil)) then	begin	//Pega posição de inicio da tagIni e acrescenta mais o length dela	posIni:=richEdit.FindText(tagIni,0,Length(richEdit.Text),[]) + Length(tagIni) + 1;	//Pega posição de inicio da tagFim	posFim:=richEdit.FindText(tagFim,0,Length(richEdit.Text),[]) + 1;	if ((posIni >= 0) and (posFim > 0)) then		ret:=copy(richEdit.Text,posIni,posFim - posIni);	end;BuscaEntreTags:=ret;end;

Para o seu exemplo pode chamar assim:

 

retorno:=BuscaEntreTags('<titulo>','</titulo>',RichEdit1);

Única coisa que muda é que é utiliza um RichEdit para armazenar o texto, e o mesm é passado na function, pois o RichEdit tem os comandos para buscar o texto e retornar posições....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.