Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Abrir fichero de texto y reemplazar cadena (https://www.clubdelphi.com/foros/showthread.php?t=78603)

ZayDun 03-05-2012 09:37:54

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.

defcon1_es 03-05-2012 14:34:36

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;

ecfisa 03-05-2012 23:55:38

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.

ZayDun 04-05-2012 18:02:13

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.

ecfisa 04-05-2012 20:02:36

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.

ZayDun 06-05-2012 22:39:14

Cita:

Empezado por ecfisa (Mensaje 431771)
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.


La franja horaria es GMT +2. Ahora son las 12:44:58.

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