Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   RtfToTxt (Truco 484) (https://www.clubdelphi.com/foros/showthread.php?t=59710)

rauros 05-09-2008 13:45:14

RtfToTxt (Truco 484)
 
Saludos a todos. Quería actualizar mi truco porqué no me di cuenta y puse el código que no era. Pero me esta dando problemas el procedimiento RtfToTxt:

Código Delphi [-]
Procedure RtfToTxt(Const Rtf: TStrings; Var Txt: TStrings; Padre: TWinControl);
Var
RtfInvisible: TRichEdit;
Begin
  RtfInvisible:=TRichEdit.create(Padre);
  RtfInvisible.Visible:=False;
  RtfInvisible.PlainText:=False;
  RtfInvisible.Parent:=Padre;
  RtfInvisible.Lines:=Rtf;
  RtfInvisible.PlainText:=True;
  Txt:=RtfInvisible.lines;
  RtfInvisible.Destroy;
end;

Eso no me funciona correctamente. Gracias a los que intenten ayudar :D.

cHackAll 05-09-2008 23:00:26

1. Es bueno saber que hay gente que si revisa los trucos (lo digo por Neftali y todos los moderadores del foro :cool:)
2. Siempre hay que probar la información que uno publica, sea parte de un código, un truco o un texto (lo digo por rauros), ésto obviamente por la calidad técnica de nuestro foro ;)

Cita:

Empezado por rauros (Mensaje 312015)
...Gracias a los que intenten ayudar :D.

Gracias a tí por tu buena intención, pero considera lo que dije y copia el codigo donde lo usaste (si es que lo usaste) o explicalo mejor aquí para poder corregirlo.

Saludos

rauros 12-09-2008 00:15:13

Jeje gracias de nuevo, pero ya lo habría actualizado si EL PROCEDIMIENTO no FALLAra. Así es, no me funciona bien, me da los tan vistos errores de lectura de memoria.

cHackAll 12-09-2008 00:20:26

Cita:

Empezado por rauros (Mensaje 313713)
Jeje gracias de nuevo, pero ya lo habría actualizado si EL PROCEDIMIENTO no FALLAra. Así es, no me funciona bien, me da los tan vistos errores de lectura de memoria.

Eso es evidente, pero como te ayudamos si no sabemos que es lo que deberia hacer?

rauros 12-09-2008 00:23:42

A perdón, pensé que con el nombre sobrarían datos :S.

Pues pasar de Rtf (texto enriquecido) a Txt (texto plano) aprovechando que los RichEdit tienen el parámetro PlainText que te deja el texto en plano.

cHackAll 12-09-2008 01:11:36

Cita:

Empezado por rauros (Mensaje 313718)
A perdón, pensé que con el nombre sobrarían datos :S...

Bueno en realidad me daba un poco de flojera leer el titulo y tuve la osadía de pensar que podrías darme algún dato adicional... (perdone usted)


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 RichEdit1.Lines.LoadFromFile('c:\documento.rtf');
 RichEdit1.PlainText := True;
 RichEdit1.Lines.SaveToFile('c:\texto.txt');
 RichEdit1.PlainText := False;
end;

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
 RichEdit1.PlainText := True;
 ListBox1.Items.Assign(RichEdit1.Lines);
 RichEdit1.PlainText := False;
end;

Te doy la "ayuda" solicitada, pero como ya entendimos que no hay nada implícito te pido que me digas si no es mucha molestia (pues esto de los trucos es muy complicado para mi), si debo probarlo y hacer la función también.

Adios :(

rauros 12-09-2008 02:04:25

Eso yo ya lo sé hacer (no quiero que penséis que pido código por la cara), pero lo que me gustaría que me ayudaran es a hacer la función sin necesidad de tener el richedit creado, osea, que la misma función la cree, transforme, y se destruya. Se supone que el código del primer post debería funcionar de ese modo, pero me dan errores de lectura de memoria...

cHackAll 12-09-2008 02:49:50

Cita:

Empezado por rauros (Mensaje 313728)
...(no quiero que penséis que pido código por la cara)...

Pero qué te ha echo pensar tal cosa... ???
a propósito, aqui esta tu "truco":

Código Delphi [-]
procedure RtfToTxt(Strings: TStrings);
var x: TRichEdit;
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;

La busqueda no es un adorno, esta allí para que no tengamos que estar haciendo el "trabajo" de otros una y otra vez; para éste hilo busca la palabra KeyLogger o SetWindowsHookEx, para éste la palabra LB_DIR o FindFirst.

Adios :mad:


La franja horaria es GMT +2. Ahora son las 10:12:53.

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