Ir al contenido


Foto

[RESUELTO] Buscar palabras en un Memo


  • Por favor identifícate para responder
6 respuestas en este tema

#1 BrainDeath

BrainDeath

    Member

  • Miembros
  • PipPip
  • 28 mensajes

Escrito 17 noviembre 2009 - 04:42

Hola.. Tengo un problemilla que no puedo resolver estoy intentando buscar una X palabra en un memo,lo que quiero hacer es poner un texto X en el Edit1 y que al buscar me ponga la linea completa donde se encuentra ese X texto en el Edit2... y que al buscar de nuevo encuentre otra linea con ese texto.

Encontre este codigo para orientarme pero el problema que solo busca el Texto EXACTO.Quiero algo parecido al finddialog de un bloc de notas pero un poco diferente.

Edit2 - Resultado de la palabra
Edit1 - Palabra a buscar



delphi
  1. var ind:integer;
  2. salir:boolean;
  3. begin
  4. ind:=0;
  5. Salir:=false;
  6. while (ind<Memo1.Lines.Count) and not Salir do
  7. begin
  8. if Memo1.Lines[ind]=(Edit1.Text) then
  9. begin
  10. Edit2.Text:=Memo1.Lines[ind];
  11. Salir:=true;
  12. end
  13. else
  14. inc(ind);
  15. end;



Espero que me hayan entendido Saludos....  :undecided:
  • 0

#2 cHackAll

cHackAll

    Advanced Member

  • Moderador
  • PipPipPip
  • 598 mensajes

Escrito 17 noviembre 2009 - 04:52



delphi
  1. procedure TForm1.Edit1Change(Sender: TObject);
  2. var ind: integer;
  3. begin
  4. for ind := 0 to Memo1.Lines.Count - 1 do
  5.   if Pos(Edit1.Text, Memo1.Lines[ind]) <> 0 then Break;
  6. if ind < Memo1.Lines.Count then
  7.   Edit2.Text := Memo1.Lines[ind];
  8. end;


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.261 mensajes
  • LocationMéxico

Escrito 17 noviembre 2009 - 04:58

Hola BrainDeath



delphi
  1. procedure TForm2.Button1Click(Sender: TObject);
  2. var
  3.   I,Indice: integer;
  4. begin
  5.   Indice := 0;
  6.   for I := 0 to memo1.lines.count - 1 do
  7.   begin
  8.     if pos(edit1.Text,memo1.lines[i]) <> 0 then begin
  9.       Indice := i;
  10.       Break;
  11.     end;
  12.   end;
  13.   ShowMessage(Memo1.lines[Indice]);
  14. end;



Salud OS

PD, ah vaya, llegaste antes que yo little bro :)
  • 0

#4 BrainDeath

BrainDeath

    Member

  • Miembros
  • PipPip
  • 28 mensajes

Escrito 17 noviembre 2009 - 05:05

Muchas gracias, la verdad las 2 soluciones soy muy buenas ya ni se con cual quedarme ahora una ultima duda hay alguna forma de quitar las diferencias entre mayusculas y minusculas?

Un ejemplo...
que en el memo diga MEMO2 y que cuando ponga memo2 me de el resultado MEMO2

:smiley:

  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.261 mensajes
  • LocationMéxico

Escrito 17 noviembre 2009 - 05:08

Hola

Pues si se puede.

Sustituye esta parte:



delphi
  1. pos(AnsiUpperCase(edit1.Text),AnsiUpperCase(memo1.lines[i]))
  2.  
  3. ShowMessage(AnsiUpperCase(Memo1.lines[Indice]));



Salud OS
  • 0

#6 BrainDeath

BrainDeath

    Member

  • Miembros
  • PipPip
  • 28 mensajes

Escrito 17 noviembre 2009 - 05:24

Gracias egostar me ha funcionado al 100%  :cheesy: igual el de cHackAll estuvo bueno pero el problema que se distinguia por mayusculas y minusculas.

Saludos...
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.261 mensajes
  • LocationMéxico

Escrito 17 noviembre 2009 - 05:26

Bueno, es que en los dos casos el asunto es igual, solo tienes que agregar el AnsiUpperCase para que obtenga lo que quieres.

Salud OS

PD, si te parece pondremos este hilo como [RESUELTO]
  • 0