Localizar todas as ocorrências de uma palavra em um memo ou RichEdit

05/03/2016

0

Bom dia a todos.

Estou desenvolvendo um aplicativo para localizar palavras em um memo e copiá-las para outro memo. Porém, preciso que essa palavra seja copiada tantas quantas vezes ela se repete, ou seja, se ela se repete 10 vezes no memo 1, ela teria que ser copiada 10 vezes para o memo 2.

Para melhor entendimento, o aplicativo possui:

1 ComboBox com a lista de palavras a serem pesquisadas;
1 ComboBox com uma lista de nomes dos arquivos a serem carregados;
1 Memo onde serão carregados os arquivos;
1 Memo onde serão copiados os resultados encontrados.

A rotina abaixo realiza parte do pretendido, porém se encontrou a palavra, copia apenas uma vez para o segundo memo.

procedure TForm1.btn_PesquisarClick(Sender:TObject);
var
TG, NP, NA, TP, TA:Integer;
Palavra, Texto:string;
begin
Palavra := cbx_Palavras.Text;
Texto := mem_Textos.Text;

for NP := 0 to cbx_Palavras.ItemIndex do
for TP := 0 to cbx_Palavras.Items.Count - 1 do

for NA := 0 to cbx_Arquivos.ItemIndex do
for TA := 0 to cbx_Arquivos.Items.Count - 1 do

TG := (cbx_Palavras.Items.Count * cbx_Arquivos.Items.Count);

repeat

if pos(UpperCase(Palavra), UpperCase(Texto)) <> 0 then
mem_Resultados.Lines.Add(cbx_Palavras.Text + ' - ' + cbx_Arquivos.Text)
else

if cbx_Palavras.ItemIndex = 0 then
btn_Pesquisar.Enabled := False;
sleep(100);
btn_Pesquisar.Enabled := True;

if (NP < TP) and (NA < TA) then
begin
cbx_Palavras.ItemIndex := cbx_Palavras.ItemIndex + 1;
end else

if (NP = TP) and (NA < TA) then
begin
cbx_Palavras.ItemIndex := 0;
cbx_Arquivos.ItemIndex := cbx_Arquivos.ItemIndex + 1;
end else

if (NP < TP) and (NA = TA) then
begin
cbx_Palavras.ItemIndex := cbx_Palavras.ItemIndex + 1;
end else

if (NP = TP) and (NA = TA) then
begin
mem_Resultados.Lines.Add('Pesquisa finalizada em ' + DateToStr(Date) + ' às ' + TimeToStr(Time));
btn_Pesquisar.Enabled := False;
Timer1.Enabled := False;
btn_Limpar.Enabled := True;
end;
until
TG = (TP * TA);
end;

Agradeço muito se alguém puder ajudar.
Paulo Duarte

Paulo Duarte

Responder

Posts

06/03/2016

Paulo Duarte

Resolvido!!!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar