Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   RtfToTxt (https://www.clubdelphi.com/foros/showthread.php?t=80878)

rauros 07-08-2008 13:07:20

RtfToTxt
 
Este truco es bastante útil para hacer editores de texto que lo colorean, para grabar los progresos en txt y no en rtf. Gracias a Miguel por la ayuda.

Código Delphi [-]
function RtfToTxt(Rtf: TStrings): TStrings;
 Var
  RtfInvisible: TRichEdit;
 Begin
  TrichEdit.Create(RtfInvisible);
  Try
   RtfInvisible.PlainText:=False;
   RtfInvisible.Lines:=Rtf;
   RtfInvisible.PlainText:=True;
   result:=RtfInvisible.lines;
  Finally
  if Assigned(RtfInvisible) then RtfInvisible.Free;
  end;
 end;

Neftali [Germán.Estévez] 11-08-2008 11:44:54

¿Has probado este código?
Código Delphi [-]
 Var
  RtfInvisible: TRichEdit;
 Begin
  TrichEdit.Create(RtfInvisible);
  Try
   RtfInvisible.PlainText:=False;

(1º) Esto falla, puesto que la construcción es incorrecta; No se exactamente lo que querías hacer, pero lo que has hecho no está bien. En la última línea la variable RtfInvisible está sin asignar.

(2º) Por otro lado, me da la impresión de que al liberar la variable (valor devuelto), posiblemente estés provocando que otras partes del código que utilizan el objeto devuelto estén fallando al acceder a algo que ya has liberado.

Código Delphi [-]
   result:=RtfInvisible.lines;
  Finally
  if Assigned(RtfInvisible) then RtfInvisible.Free;
  end;

Creo que deberías corregirlo y añadir al menos un comentario con el texto correcto.


cHackAll 22-10-2008 23:39:47

Código Delphi [-]
procedure RtfToTxt(Strings: TStrings);
begin
 with TRichEdit.Create(nil) do
  begin
   Visible := False;
   Parent := Application.MainForm;
   Text := Strings.Text;
   PlainText := True;
   Strings.Assign(Lines);
   Destroy;
  end;
end;

Modo de uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 ListBox1.Items.LoadFromFile('c:\leecher.rtf');
 RtfToTxt(ListBox1.Items);
end;

Saludos


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

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