Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PlainText aus RTF auslesen (https://www.delphipraxis.net/65439-plaintext-aus-rtf-auslesen.html)

DataCool 16. Mär 2006 15:21


PlainText aus RTF auslesen
 
Hi Leute,

irgentwie stehe ich gerade auf dem Schlauch und habe ne Denkblockade!

Wie kann ich aus :

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl {\f0\fnil\fcharset0 Arial;}}
{\colortbl ;\red0\green64\blue128;}
\viewkind4\uc1\pard\cf1\fs20 test 9\par
}

Den Plain-Text(in diesem Falle "Test 9") auslesen/extrahieren ?

Danke und Gruß

marabu 16. Mär 2006 15:24

Re: PlainText aus RTF auslesen
 
Ich würde es in ein TRichEdit einlesen und dessen Eigenschaft Text wieder auslesen.

Grüße vom marabu

fLaSh11 16. Mär 2006 15:26

Re: PlainText aus RTF auslesen
 
Delphi-Quellcode:
RichEdit1.Lines.LoadFromFile('C:\test.rtf');
Dann wird nur die test9 angezeigt! (Wie marabu schon sagte)

DataCool 16. Mär 2006 15:45

Re: PlainText aus RTF auslesen
 
Hi,

ich muss da wohl noch ein paar Zusatz-Infos hinterher schicken :

- Ich habe das oben beschriebene RTF Format in einer String Variable und möchte nachher nur den reinen Text in meiner Variable drin haben.

Hatte schon folgendes probiert, was NICHT funktioniert :

Delphi-Quellcode:
function RTF2PlainText(const sRTF: String): String;
begin
  re_Convert.PlainText := false;
  re_Convert.Text := sRTF;
  re_Convert.PlainText := true;
  result := re_Convert.Text;
end;
Gruß

marabu 16. Mär 2006 15:52

Re: PlainText aus RTF auslesen
 
Ich bleibe bei meinem Vorschlag.

Delphi-Quellcode:
function RtfToPlain(rtf: String): String;
begin
  with TRichEdit.CreateParented(HWND(-3)) do
  begin
    SelectAll;
    SelText := rtf;
    Result := Text;
    Free;
  end;
end;
marabu

DataCool 16. Mär 2006 16:11

Re: PlainText aus RTF auslesen
 
Hi,

wenn ich noch nen Trim drum mache passt es, ohne Trim hab ich nen CRLF am Ende;

Vielen Dank

Achim Kalwa 5. Nov 2008 14:10

Re: PlainText aus RTF auslesen
 
Hallo,

ich stehe selber gerade vor diesem Problem und bin bei der Suche auf diesen Lösungsansatz gestoßen:
Zitat:

Zitat von marabu
Ich bleibe bei meinem Vorschlag.

Delphi-Quellcode:
with TRichEdit.CreateParented(HWND(-3)) do
...

Nur 'ne kurze Frage: Zu welchem Zweck wird dort -3 als HWND übergeben? GetDesktopWindow() oder so hätte ich ja verstanden, aber was ist -3?!

Lannes 5. Nov 2008 21:30

Re: PlainText aus RTF auslesen
 
Hallo,

da Link hat marabu das erklärt,
und da http://msdn.microsoft.com/en-us/libr...x#message_only gibt es auch noch Infos.

arnof 4. Mär 2017 09:05

AW: Re: PlainText aus RTF auslesen
 
Zitat:

Zitat von marabu (Beitrag 440438)
Ich bleibe bei meinem Vorschlag.

Delphi-Quellcode:
function RtfToPlain(rtf: String): String;
begin
  with TRichEdit.CreateParented(HWND(-3)) do
  begin
    SelectAll;
    SelText := rtf;
    Result := Text;
    Free;
  end;
end;
marabu


Hallo, nachdem ich sowas gerade mal brauchte, musste ich festsetllen das das unter Berlin nicht geht! Hier meine gesteste Lösung:

Delphi-Quellcode:
function RTF2Text(rtf: String): String;
 var stream:TStringStream;
begin
  stream:=TStringStream.Create(rtf);
  with TRichEdit.CreateParented(HWND(-3)) do
  begin
    Lines.LoadFromStream(Stream);
    Result := Text;
    Free;
  end;
  stream.Free;
end;

Whookie 4. Mär 2017 10:43

AW: Re: PlainText aus RTF auslesen
 
Da RTF-Text ansi - codiert ist, benötigt es eine Umwandlung und man muss dem RichEdit auch noch klar machen das man es ernst meint mit Ansi:

Delphi-Quellcode:
function Rtf2Txt(const rtf: ansistring): string;
begin
  with TRichEdit.CreateParented(HWND(-3)) do
  begin
    SendMessage(Handle, WM_SETTEXT, 0, NativeInt(@rtf[1]));
    Result := Text;
    Free;
  end;
end;
dann geht das immer noch ohne stream.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz