Procurar uma palavra em um Memo ou RichEdit ???
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
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
Curtidas 0
Respostas
Marco Salles
25/06/2005
Amigo voce pode usar a Instrução
e/ou
[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]
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
Dennis.delphi
25/06/2005
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
O que pode estar acontecendo?
Muito Obrigado
GOSTEI 0
Dennis.delphi
25/06/2005
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
Há como fazer isso ?
Muito Obrigado
GOSTEI 0
Marco Salles
25/06/2005
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]
GOSTEI 0
Marco Salles
25/06/2005
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´);
GOSTEI 0
Dennis.delphi
25/06/2005
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
Alguêm sabe como fazer isso?
Muito Obrigado
GOSTEI 0
Marco Salles
25/06/2005
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
[b:6d45b39ba0]Note que a palavra a ser pesquisada esta no edit[/b:6d45b39ba0]
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
Dedi
25/06/2005
Amigo,
use o TFindDialog
tem um exemplo em [url]http://www.swissdelphicenter.ch/torry/printcode.php?id=1881[/url]
use o TFindDialog
tem um exemplo em [url]http://www.swissdelphicenter.ch/torry/printcode.php?id=1881[/url]
GOSTEI 0
Marco Salles
25/06/2005
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..
GOSTEI 0