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

Delphi

05/03/2016

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

Curtidas 0

Respostas

Paulo Duarte

Paulo Duarte

05/03/2016

Resolvido!!!
GOSTEI 0
POSTAR