Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   buscar mas de una palabra en memo y eliminar (https://www.clubdelphi.com/foros/showthread.php?t=80094)

jonydread 04-09-2012 04:57:22

buscar mas de una palabra en memo y eliminar
 
amigos queria saber si se puede buscar mas de una palabra a la vez en un memo y eliminar
se que se realiza de esta forma mas o menos
Código Delphi [-]
 For l:=0 to memo1.Lines.Count - 1 do
 if pos('palabra',memo1.lines[l]) > 0 then
 begin
memo1.Lines.Delete(l);
o debo realizar dos veces el mismo codigo si quiero buscar mas palabras??

lo que quiero hacer es que al cargar texto al memo la palabra 1, palabra 2 y palabra 3 queden siempre al ultimo y el metodo que utilizare es eliminarlas y agregarlas al final :D

saludos!!

escafandra 04-09-2012 10:01:35

Código Delphi [-]
Memo1.Text:= StringReplace(Memo1.Text, 'palabra','',[rfReplaceAll]);

Saludos.

ecfisa 04-09-2012 11:00:02

Hola jonydread.

La verdad no veo para nada claro que es lo que deseas hacer.

Si buscas eliminar una palabra del texto del memo, la solución que te dió escafandra es la más adecuada. Y del mismo modo lo sigue siendo, si deseas agregar la palabra eliminada al final del memo.

Pero por otro lado, mirando el código que pusiste, dá la impresión que quisieras eliminar las líneas que contengan a la palabra y agregarlas al final (como comentas en la última parte de tu mensaje).

Si así fuera, podrías hacer:
Código Delphi [-]
procedure BorradasAlFondo(Texto: TStrings; Palabras: array of string);
var
  i,j: Integer;
  s  : string;
begin
  for i:= Low(Palabras) to High(Palabras) do
    for j:= 0 to Texto.Count -1 do
      if Pos(Palabras[i], Texto[j]) <> 0 then
      begin
        Texto.Add(Texto[j]);
        Texto.Delete(j);
      end;
end;

Llamada:
Código Delphi [-]
  BorradasAlFondo(Memo1.Lines,['palabra_1','palabra_2','palabra_3',...'palabra_N']);

Saludos.

jonydread 05-09-2012 03:44:15

gracias por sus respuestas, ecfisa funciono a la perfeccion muchas gracias!!!

jonydread 06-09-2012 04:30:01

amigo ecfisa con el
procedure BorradasAlFondo
como puedo hacerlo si una de las palabras no existe la agrege de igual manera
por ejemplo
Cita:

mi texto texto texto
texto
palabra 3
y quede
Cita:

mi texto texto texto
texto
palabra 1
palabra 2
palabra 3
he probado asi bueno de muchas formas pero es el mismo resultado o peor :confused:
Código Delphi [-]
  for i:= Low(Palabras) to High(Palabras) do
    for j:= 0 to Texto.Count -1 do
      if Pos(Palabras[i], Texto[j]) <> 0 then
      begin
      Texto.Delete(j);
      Texto.Add(Palabras[i]);

       end;

muchas gracias!!^\||/

ecfisa 06-09-2012 19:02:26

Cita:

Empezado por jonydread (Mensaje 442017)
amigo ecfisa con el procedure BorradasAlFondo
como puedo hacerlo si una de las palabras no existe la agrege de igual manera ...

Hola jonydread.

Si no te entiendo mal, sería:
Código Delphi [-]
procedure BorradasAlFondo(Texto: TStrings; Palabras: array of string);
var
  i,j: Integer;
  s  : string;
  Found: Boolean;
begin
  for i:= Low(Palabras) to High(Palabras) do
  begin
    Found := False;
    for j:= 0 to Texto.Count -1 do
      if Pos(Palabras[i], Texto[j]) <> 0 then
      begin
        Found:= True;
        Texto.Add(Texto[j]);
        Texto.Delete(j);
      end;
    if not Found then
      Texto.Add(Palabras[i]);
  end;
end;

Saludos. :)

jonydread 07-09-2012 02:32:51

muchas gracias nuevamente ya estaba medio enredado

saludos!


La franja horaria es GMT +2. Ahora son las 16:36:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi