Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   buscar una cadena en un memo y cambiarla (https://www.clubdelphi.com/foros/showthread.php?t=26885)

perico 07-11-2005 01:41:54

buscar una cadena en un memo y cambiarla
 
buenas amigos

amigos necesito hacer esto tengo un tmemo donde hay un texto escrito necesito buscar una cadeja y reemplazarla por otra

por ejemplo en el Tmemo tengo un texto donde esta la palabra ALCALDE y yo necesito cambiarla por Pedro Perez ¿como lo hago? por mas que le doy no logro encontrar la manera.

les agradesco de antemano cualquier ayuda :confused: :confused:

marcoszorrilla 07-11-2005 07:22:33

Para buscarlo prueba esto:
Código Delphi [-]
  procedure TForm1.Button1Click(Sender: TObject);
  var
  nCont:Integer;
  begin
    For nCont:=0 to memo1.Lines.Count - 1 do
    begin
     if pos(Uppercase(Edit1.Text),UpperCase(memo1.lines[nCont])) > 0 then
     ShowMessage('La palabra está en la línea:'+IntTostr(nCont)+Memo1.Lines[nCont]);
    end;
  end;

Una vez encontrado creo que no tengas problemas en sustituirlo.

Un Saludo.

elcigarra 07-11-2005 13:59:41

...Y para sustituirlo puedes con la función "AnsiReplaceStr" (creo que se llamaba así o algo parecido, pero no tengo el Delphi aquí para verificarlo)

perico 07-11-2005 14:19:26

Gracias
 
muchas gracias ya consigo la cadena pero al momento de remplazarla con AnsiReplaceStr no me daerror pero no la reemplaza no se que error estare cometiendo, primero estoy haciendo la prueba de esta manera para verificar el cambio, pero no la reemplaza;

AnsiReplaceStr(Memo1.Text,'ALCALDE1','ABCDERTE');

¿que error estare cometiendo? :confused:

Héctor Randolph 07-11-2005 16:20:38

Si ya conoces en que línea está la palabra prueba con esto.

Código Delphi [-]
AnsiReplaceStr(Memo1.Lines[nCont],Uppercase(Edit1.Text),'ABCDERTE');

Es decir, envía como parámetro sólo una línea y no todo el texto.

Tal vez ese sea el problema.

Un saludo.

roman 07-11-2005 16:41:51

Pues bueno, si nada más se pone


Código Delphi [-]
AnsiReplaceStr(Memo1.Text, 'ALCALDE1', 'ABCDERTE');

seguro que no se reemplaza nada. Habría que poner


Código Delphi [-]
Memo1.Text := AnsiReplaceStr(Memo1.Text, 'ALCALDE1', 'ABCDERTE');

// Saludos

Héctor Randolph 07-11-2005 17:29:38

Cita:

Empezado por roman
AnsiReplaceStr(Memo1.Text, 'ALCALDE1', 'ABCDERTE');

seguro que no se reemplaza nada. Habría que poner

Memo1.Text := AnsiReplaceStr(Memo1.Text, 'ALCALDE1', 'ABCDERTE');

ups!, es verdad.

Además de esta forma no habrá que leer línea por línea, pues se reemplazan todas las ocurrencias de una sola vez.

Saludos

perico 07-11-2005 23:15:06

muchas gracias
 
muchas gracias era ahi donde tenia el error, es que se me escapo ese detalle

muchas gracias por su ayuda y tomarce el tiempo de responder


La franja horaria es GMT +2. Ahora son las 03:53:44.

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