Fórum Procurar uma palavra em um Memo ou RichEdit ??? #286096

25/06/2005

0

blz galera,

Eu gostaria de fazer com que o programa procura-se uma palavra em um MEMO ou RICHEDIT e me reporta-se uma mensagem, se a palavra existe ou não.

Alguêm sabe como fazer isso?

Muito Obrigado


Dennis.delphi

Dennis.delphi

Responder

Posts

25/06/2005

Marco Salles

Amigo voce pode usar a Instrução

if Memo1.Lines.IndexOf(edit1.Text)>0 Then
  showmessage(´Tem´)
else
  Showmessage(´Não tem´);


e/ou

if RichEdit1.Lines.IndexOf(edit1.text)>0 Then
  showmessage(´Tem´)
else
  Showmessage(´Não tem´);


[b:827b6b68c3]P:S Coloquei o edit1.Text mas pode ser qualquer variável String , ou mesmo uma constante lilitada por Aspas Simples[/b:827b6b68c3]


Responder

Gostei + 0

25/06/2005

Dennis.delphi

Mas ele só está passando a mensagem que não achou, sendo que existe a palavra no campo Memo?

O que pode estar acontecendo?

Muito Obrigado


Responder

Gostei + 0

25/06/2005

Dennis.delphi

Eu gostaria que ele acha-se a palavra mesmo que ela não esteja no ínicio da frase, ou no inicio do texto.

Há como fazer isso ?

Muito Obrigado


Responder

Gostei + 0

25/06/2005

Marco Salles

Mas ele só está passando a mensagem que não achou, sendo que existe a palavra no campo Memo? O que pode estar acontecendo?


Pode estar ocorrendo Duas coisas::

1)Voce colocou Aspas no edit1.text Ou Na String ... Logo
ASSIM: if Memo1.Lines.IndexOf(´edit1.Text´)>-1Then
neste caso a palavra edit1.text que sera pesquisada e não o seu conetudo

2) A Palavra que voce esta pesquisando esta no inicio do Memo1 Logo ele retorna IndeOf=0 , e o código que lhe passei e so Para IndexOf > 0.. To corrigindo no código abaixo

Desculpe pela falha

if Memo1.Lines.IndexOf(edit1.Text)>-1Then 
  showmessage(´Tem´) 
else 
  Showmessage(´Não tem´);


if RichEdit1.Lines.IndexOf(edit1.text)>0 Then 
  showmessage(´Tem´) 
else 
  Showmessage(´Não tem´);


Agora se não me falha a memória esta pesquisa não diferencia Maiscula de Minuscula

No início do tópico voce postou;

Eu gostaria de fazer com que o programa procura-se uma palavra em um MEMO ou RICHEDIT e me reporta-se uma mensagem, se a palavra existe ou não.


Eu lhe enviei um código que faz isto.

Agora voe mudou o contexto:::
Eu gostaria que ele acha-se a palavra mesmo que ela não esteja no ínicio da frase, ou no inicio do texto.

Bem ai , eu não sei se entendi direito , mas suponha que a primeira linha do Memo1 esteja com a seguinte String:
1) ´Acha-me se for capaz´
Ai voce vai queree achar a Palavra ´For´
Neste exemplo específico o código anterior não irá funcionar , pois não atende esta sua segunda exigência.. Foi postado devido a sua necessidade inicial

Para a sua Segunda exigencia se ninguem fornecer um código Da VCL
Que faça isto , da para fazer no Braço...Porém eu não conheço um código simples que faça isto

[b:c434bb905a]Falando em exigencia qual delas voce quer :?: A Que postou Primeiro Ou A segunda :?: :?: [/b:c434bb905a]


Responder

Gostei + 0

25/06/2005

Marco Salles

Corrigir so um código :oops: :oops: :oops:

if Memo1.Lines.IndexOf(edit1.Text)>-1Then 
  showmessage(´Tem´) 
else 
  Showmessage(´Não tem´);


if RichEdit1.Lines.IndexOf(edit1.text)>-1 Then 
  showmessage(´Tem´) 
else 
  Showmessage(´Não tem´);



Responder

Gostei + 0

26/06/2005

Dennis.delphi

Blz Marco Salles valeu pela sua ajuda, muito obrigado, mas eu precisarei de um código para achar uma palavra sejá aonde ela estiver dentro de um memo, no meio de um texto, no ínicio de uma frase e etc.

Alguêm sabe como fazer isso?


Muito Obrigado


Responder

Gostei + 0

26/06/2005

Marco Salles

Como eu disse , não sei se tem na VCL

Na munheca da para fazer o código abaixo que deve ser testado por voce , muitas vezes.. Quero destacar também , que mesmo que o código sirva , deve ser melhorado .. Por exemplo , fazer uma pesquisa independentemente das letra serem maisculas ou minusculas...

No codigo abaixo a pesquisa so retorna verdadeiro se a palavra a ser pesquisada for igual a palavra que esta no memo... Mas como eu disse , isto pode ser alterado. Primeiro tem que ver se o código satisfaz

function AcharPalavraNoMemo(Memo:TMemo;palavra:String;var i:Integer):boolean;
var
 posicao:Integer;
 Frase:String;
 TextoAux:String;

begin
result:=False;
i:=0;
 while i <= Memo.Lines.Count -1 do
   begin
     Frase:=Memo.Lines.Strings[i];
     posicao:=1;
     TextoAux:=´´;
     while posicao <= Length(Frase) do
       begin
         if Frase[posicao] <> ´ ´ Then
           begin
             TextoAux:=TextoAux+Frase[posicao];
             posicao:=Posicao+1;
           end
         else
           begin
             if TextoAux = palavra Then
               begin
                 result:=true;
                 exit;
               end
             else
               begin
                 textoAux:=´´;
                 Posicao:=Posicao+1;
               end;
           end;
       end;
     if TextoAux = palavra Then
       begin
         result:=true;
         exit;
       end;
     i:=i+1;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
 i:Integer;
begin
if AcharPalavraNoMemo(Memo1,edit1.text,i) then
  begin
   showmessage(´Palavra encontrada´);
   Memo1.SetFocus;
   memo1.Lines.Strings[i];
   end
  else
    showmessage(´Palavra não encontrada´);
end;


[b:6d45b39ba0]Note que a palavra a ser pesquisada esta no edit[/b:6d45b39ba0]


Responder

Gostei + 0

27/06/2005

Dedi

Amigo,
use o TFindDialog
tem um exemplo em [url]http://www.swissdelphicenter.ch/torry/printcode.php?id=1881[/url]


Responder

Gostei + 0

27/06/2005

Marco Salles

Amigo, use o TFindDialog


É o componente se encontra na paleta Dialogs...

Gostei da interface :P

O Exemplo é bom , mas achei tres coisas , pelo meu ponto de vista, que precisam ser modificadas ,

1)O primeiro elemento do Memo ele não acha :cry: :cry: :cry:

2) Para fazer uma Busca , tenho que dar dois clicks no botão [b:35c8f375c4]Localizar Proxima[/b:35c8f375c4] , caso o item esteja incluido no Memo..Quando ele não esta , ai , so um click é suficiente e a mensagem ja é retornada :cry: :cry:

3) apos achar o item e dar Ok Na mensagem , deve-se fechar a caixa de dialog e passar imediatamente para o Memo..


Responder

Gostei + 0

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

Aceitar