Série da semana: Primeiros passos no React

Veja mais

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

05/03/2016

1

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.
Responder

Posts

06/03/2016

Paulo Duarte

Resolvido!!!
Responder