Fórum Procurar uma palavra em um Memo ou RichEdit ??? #286096
25/06/2005
0
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
Curtir tópico
+ 0Posts
25/06/2005
Marco Salles
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]
Gostei + 0
25/06/2005
Dennis.delphi
O que pode estar acontecendo?
Muito Obrigado
Gostei + 0
25/06/2005
Dennis.delphi
Há como fazer isso ?
Muito Obrigado
Gostei + 0
25/06/2005
Marco Salles
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 lhe enviei um código que faz isto.
Agora voe mudou o contexto:::
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]
Gostei + 0
25/06/2005
Marco Salles
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´);
Gostei + 0
26/06/2005
Dennis.delphi
Alguêm sabe como fazer isso?
Muito Obrigado
Gostei + 0
26/06/2005
Marco Salles
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]
Gostei + 0
27/06/2005
Dedi
use o TFindDialog
tem um exemplo em [url]http://www.swissdelphicenter.ch/torry/printcode.php?id=1881[/url]
Gostei + 0
27/06/2005
Marco Salles
É 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..
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)