Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 03-05-2012
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 121
ZayDun Va por buen camino
Abrir fichero de texto y reemplazar cadena

Hola, he estado buscando un metodo que me permita modificar parte de el contenido de un archivo de texto, y buscando por este foro encontre este codigo..

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject); 
var   i,j: integer; 
begin   
  with TStringList.Create do   
  try     
    LoadFromFile('c:\visitasweb.txt');     
    i:= 0;     
    while i < Count do     
    begin       
      j:= Pos('EMAIL',Uppercase(Strings[i]));       
      if j > 0  then       
      begin         
        Strings[i]:= Copy(Strings[i],j,MAXINT);         
        inc(i);       
      end 
      else         
        Delete(i);     
    end;     
    SaveToFile('c:\resultado.txt');     
    showMessage ('Listo');   
  finally     
    Free;   
  end;
end;

El codigo como podeis ver copia el contenido que estas buscando "EMAIL", pero como podria hacer para que en vez de copiarlo se reemplaze por el contenido que tengo en un memo? estoy utilizando delphi 6.

Última edición por Casimiro Notevi fecha: 03-05-2012 a las 10:24:14.
Responder Con Cita
  #2  
Antiguo 03-05-2012
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 524
defcon1_es Va por buen camino
Hola.
Cambia la línea del COPY por lo que necesites.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject); 
var   i,j: integer; 
begin   
  with TStringList.Create do   
  try     
    LoadFromFile('c:\visitasweb.txt');     
    i:= 0;     
    while i < Count do     
    begin       
      j:= Pos('EMAIL',Uppercase(Strings[i]));       
      if j > 0  then       
      begin         
        Strings[i]:= Memo1.Lines.Text;         
        inc(i);       
      end 
      else         
        Delete(i);     
    end;     
    SaveToFile('c:\resultado.txt');     
    showMessage ('Listo');   
  finally     
    Free;   
  end;
end;
__________________
Pintor de pantallas...
Responder Con Cita
  #3  
Antiguo 03-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 8.007
ecfisa Es un diamante en brutoecfisa Es un diamante en brutoecfisa Es un diamante en bruto
Hola.

Otra forma de reemplazar el texto buscado puede ser:
Código Delphi [-]
procedure ReplaceAndSave(const Name, Old, New: string);
begin
  with TStringList.Create do
  try
    LoadFromFile(Name);
    Text:= StringReplace(Text, Old, New, [rfReplaceAll]);
  finally
    SaveToFile(Name);
    Free;
  end;
end;

Llamada:
Código Delphi [-]
const
   FNAME = 'C:\...\TU_ARCHIVO.TXT';
...
   ReplaceAndSave(FNAME, Edit1.Text, Trim(Memo2.Text));

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 04-05-2012
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 121
ZayDun Va por buen camino
Gracias por la ayuda, no he podido contestar antes, el problema es que al guardarse el documento mediante savetofile crea un salto de linea que no puedo quitarlo, he intentado limpiar los salto "#13#10" pero al guardar de nuevo el documento vuelve a estar el salto de linea.
Responder Con Cita
  #5  
Antiguo 04-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 8.007
ecfisa Es un diamante en brutoecfisa Es un diamante en brutoecfisa Es un diamante en bruto
Hola.

Seguramente el texto que se inserta desde el memo tenga saltos de líneas, podrías quitarlos de este modo:
Código Delphi [-]
procedure ReplaceAndSave(const Name: string; Old, New: string);
begin
  New:= StringReplace(New, #13#10, '', [rfReplaceAll]);  //quitar las ocurrencias de #13#10 
  with TStringList.Create do
  try
    LoadFromFile(Name);
    Text:= StringReplace(Text, Old, New, [rfReplaceAll]);
  finally
    SaveToFile(Name);
    Free;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 06-05-2012
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 121
ZayDun Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Seguramente el texto que se inserta desde el memo tenga saltos de líneas, podrías quitarlos de este modo:
Código Delphi [-]
procedure ReplaceAndSave(const Name: string; Old, New: string);
begin   
New:= StringReplace(New, #13#10, '', [rfReplaceAll]);  //quitar las ocurrencias de #13#10
    with TStringList.Create do   
try     LoadFromFile(Name);     
Text:= StringReplace(Text, Old, New, [rfReplaceAll]);
   finally
     SaveToFile(Name); 
    Free; 
 end; 
end;


Saludos.

Gracias de nuevo ecfisa!!, el código reemplaza y guarda sin ningún problema.

Última edición por marcoszorrilla fecha: 06-05-2012 a las 22:43:37.
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Contar y reemplazar una cadena de numeros darkbits Varios 9 11-03-2011 23:05:16
Reemplazar texto en un .dfm elcigarra OOP 9 19-12-2007 09:47:17
Reemplazar texto en fichero HTML Sr_Sombrero Varios 1 17-04-2007 20:01:50
Reemplazar el contenido de un fichero Urticaria Varios 5 04-10-2006 17:40:18
Abrir fichero de texto desde Delphi Drahcir Varios 7 22-06-2006 14:26:36


La franja horaria es GMT +2. Ahora son las 01:00:38.


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