Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-11-2006
Avatar de johurgi
johurgi johurgi is offline
Miembro
 
Registrado: jul 2006
Posts: 95
Poder: 18
johurgi Va por buen camino
Copiar texto de rtf

Hola a tod@s.

Mi cuestion es la siguiente, tengo un richedit en el cual cargo un fichero rtf de la siguiente forma.

Código Delphi [-]
richedit1.Lines.LoadFromFile('C:\fichero.rtf');

En este texto tengo que substituir unos valores sobre unas palabras claves como son nombre y telefono. Cual es mi sorpresa que cuando ya tengo cargado bien el texto y substituyo las palabras clave el formato de todo el texto se va. De que forma puedo hacerlo para que no pierda el formato.

El codigo entero es el siguiente.
Código Delphi [-]
var
n,t:string
begin
n:=table1nombre.Value;
t:=table1Telefono.Value;
richedit1.Lines.LoadFromFile('C:\fichero.rtf');
richedit1.Lines.Text:=StringReplace(richedit1.Text,'nombre',n,[rfReplaceAll]);
richedit1.Lines.Text:=StringReplace(richedit1.Text,'telefono',t,[rfReplaceAll]);
richedit1.Lines.SaveToFile('C:\final.rtf');
end;

gracias de antemano.
Responder Con Cita
  #2  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Prueba a ver si te sirve esta rutina:

Código Delphi [-]
procedure ReplaceText(RichEdit: TRichEdit; const Text, ReplaceText: String);
var
  TextStart: Integer;
  TextLength: Integer;

begin
  TextStart := RichEdit.FindText(Text, 0, Length(RichEdit.Text), [stWholeWord]);
  TextLength := Length(Text);

  while TextStart <> -1 do
  begin
    RichEdit.SelStart := TextStart;
    RichEdit.SelLength := TextLength;
    RichEdit.SelText := ReplaceText;

    TextStart := RichEdit.FindText(Text, 0, Length(RichEdit.Text), [stWholeWord]);
  end;
end;

Ejemplo de uso:

Código Delphi [-]
ReplaceText(RichEdit1, 'nombre', n);

// Saludos
Responder Con Cita
  #3  
Antiguo 28-11-2006
Avatar de johurgi
johurgi johurgi is offline
Miembro
 
Registrado: jul 2006
Posts: 95
Poder: 18
johurgi Va por buen camino
Muchas gracias roman, con tu funcion ya me funciona perfecto.
Responder Con Cita
  #4  
Antiguo 28-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Me alegra que ta haya servido. Pero tiene un pequeño defectillo que hay que corregir. En la línea al final del ciclo, donde dice:

Código Delphi [-]
TextStart := RichEdit.FindText(Text, 0, Length(RichEdit.Text), [stWholeWord]);

debe decir

Código Delphi [-]
TextStart := RichEdit.FindText(Text, TextStart, Length(RichEdit.Text), [stWholeWord]);

Como estaba, hacía la búsqueda desde el principio del texto cada vez, y con el cambio lo hace desde donde encontró la ocurrencia anterior de la palabra.

// Saludos
Responder Con Cita
  #5  
Antiguo 28-11-2006
Avatar de johurgi
johurgi johurgi is offline
Miembro
 
Registrado: jul 2006
Posts: 95
Poder: 18
johurgi Va por buen camino
gracias nuevamente, ahora funciona mucho mas rapido.
Responder Con Cita
Respuesta



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
Error al copiar texto Faust API de Windows 13 05-09-2006 06:45:41
Copiar texto en RichEdit darkerbyte Varios 4 16-11-2005 01:37:17
Copiar el texto de un RichEdit soul6301 Varios 5 11-11-2005 03:31:24
Copiar las columnas en un archivo de texto Paulina DelphiPACK 0 08-10-2004 18:54:07
Copiar texto de un RichEdit a otro SCH Varios 2 11-08-2003 08:16:26


La franja horaria es GMT +2. Ahora son las 06:45:25.


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
Copyright 1996-2007 Club Delphi