Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Pesquisa


Pretinha

Pergunta

Olá...

Bom é minha 1° vez aqui...

Tenho um trabalho para fazer, + não quer dar muito certo...

Gostaria da ajuda de vocês..

Bom o programa consiste no seguinte:

- no componente memo, será digitado um texto qualquer...

- haverá um edit, onde será digitada uma palavra

- e por fim um botão pesquisar.

Ao clikr no botão pesquisar, será pesquisado a palavra digitada no edit e aparecerá na tela a quantidade de vezes que essa palavra foi digitad no memo.

Como que eu posso fazer isso?

Tive algumas ideias aqui...+ não foram muito bem sucedidas

=/

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Opa

talvez tenha maneira mais fácil, mas assim funciona...

var
  s: String;
  i1, i2: Integer;
begin
  i2 := -1;
  s := Memo1.Lines.Text;
  i1 := Pos(LowerCase(Edit1.Text), LowerCase(s));
  if i1 = 0 then
  ShowMessage('Não foi encontrada a palavra: "' + Edit1.Text + '"') else
  while i1 > 0  do
  begin
    i1 := Pos(LowerCase(Edit1.Text), LowerCase(s));
    delete(s, i1, Length(Edit1.Text));
    Inc(i2, 1);
  end;
  if i2 > 0 then
  ShowMessage('Número de palavras encontradas: ' + IntToStr(i2));
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Opa

Desculpa, pela demora eu li esqueci de responder...

Então, a função Pos() retorna a posição (Index) de uma determinada palavra

passada para a função, então o Delete neste caso está apagando a palavra

que já foi encontrada e assim pra não econtrá-la novamente...

abs

Link para o comentário
Compartilhar em outros sites

  • 0

ah...sim...entendi...

só que tem um problema... tipo vamos supor que no memo tenha a palavra "casamento", por ex, e é pesquisada a palavra "casa", ele conta a palavra "CASAmento" como sendo uma palavra...

pensei em fazer algo do tipo, contar quantas letras tem a palavra pesquisada e verificar no memo, somente as palavras com essa quantidade de letra, porém não sei como contar a quantidade de letras das palavras digitadas no memo

=/

Link para o comentário
Compartilhar em outros sites

  • 0
pensei em fazer algo do tipo, contar quantas letras tem a palavra pesquisada e verificar no memo, somente as palavras com essa quantidade de letra, porém não sei como contar a quantidade de letras das palavras digitadas no memo

Pretinha, seguindo o código que o Churc postou (com alguns ajustes), ficaria assim:

var
  s: String;
  i1, i2: Integer;
  CheckWord :boolean;
  Ch :Char;
begin
  i2 := 0;  // inicializa com 0 o contador
  s := Memo1.Lines.Text;
  i1 := Pos(LowerCase(Edit1.Text), LowerCase(s));
  if i1 = 0 then
    ShowMessage('Não foi encontrada a palavra: "' + Edit1.Text + '"')
  else
    while i1 > 0  do
    begin
      if i1 > 1 then  // se não está no início do texto
      begin
        move(s[i1-1], ch, 1);  // obtém o caracter antes da palavra
        CheckWord := not (Ch in ['a'..'z', 'A'..'Z']);
      end else  // é a primeira palavra no texto
        CheckWord := True;
      delete(s, 1, i1 +Length(Edit1.Text) -1);
      if s <> '' then  // se não chegou ao fim do texto...
      begin
        move(s[1], ch, 1);
        CheckWord := CheckWord and not (Ch in ['a'..'z', 'A'..'Z']);
      end else  // chegou ao fim do texto
        CheckWord := True;
      if CheckWord then
        Inc(i2, 1);
      i1 := Pos(LowerCase(Edit1.Text), LowerCase(s));
    end;
  if i2 > 0 then
    ShowMessage('Número de palavras encontradas: ' + IntToStr(i2));
end;

após encontrada a posição da palavra, é verificado o caracter que a precede e o que a sucede. Não sendo qualquer letra do alfabeto, consideramos que é válida.

Observe que já no outro código, o contador i2 deveria iniciar em 0 e não em -1, pois, ao encontrar a primeira ocorrência da palabra, o contador teria o valor 0 (zero) o que não estaria correto.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...