Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi formatierung von Text im TRichEdit (https://www.delphipraxis.net/18791-formatierung-von-text-im-trichedit.html)

Xeno-Sebi 24. Mär 2004 17:46


formatierung von Text im TRichEdit
 
Hi!

Ich habe folgendes Problem: Ich ersetze in einem TRichEdit alle "<" durch "\b<" und alle ">" durch ">\b0", damit html-tags dickgedruckt ausgegeben werden.
Code:
text.text:=StringReplace(text.text, '<', '\b<', [rfIgnoreCase,rfReplaceAll]);
text.text:=StringReplace(text.text, '>', '>\b0', [rfIgnoreCase,rfReplaceAll]);
Leider wird aus "\b" dann "\\b", was dafür sorgt, dass die formatierung nicht wirkt, sondern vor dem "<" "\b" als Text ausgegeben wird.

Wenn ich es so mache:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var temptext:TStringList;
Begin
temptext:=TStringList.Create;
temptext.Text:='{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil MS Sans Serif;}}\viewkind4\uc1\pard\f0\fs16';
temptext.Text:=temptext.Text+StringReplace(text.text, '<', '\b<', [rfIgnoreCase,rfReplaceAll]);
temptext.Text:=StringReplace(temptext.Text, '>', '>\b0', [rfIgnoreCase,rfReplaceAll])+'}';
temptext.SaveToFile(ExtractFilePath(Application.ExeName)+'temp.txt');
text.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'temp.txt');
end;
geht es, aber ist es recht unelegant

kann mir vielleicht wer helfen?

fkerber 24. Mär 2004 18:02

Re: formatierung von Text im TRichEdit
 
Hi!

nur so als "Zwischenfrage":

Warum speicherst du einen RTF-formatierten Text als txt-Datei?



Ciao fkerber

Xeno-Sebi 24. Mär 2004 18:09

Re: formatierung von Text im TRichEdit
 
hm...kA, hab über die Dateiendung nicht nachgedacht, aber rtf wollte ich nicht nehmen, da ich viel rumprobiert habe und, um die formatierung zu "begutachten", die Datei sowieso mit notepad öffnen musste

fkerber 24. Mär 2004 18:24

Re: formatierung von Text im TRichEdit
 
Hi!

Auf die Schnelle hab ich mal das rausbekommen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
richedit1.Lines.SaveTofile('text.txt');
memo1.Lines.LoadFromfile('text.txt');
memo1.text:=StringReplace(memo1.text, '<', '\b<', [rfIgnoreCase,rfReplaceAll]);
memo1.text:=StringReplace(memo1.text, '>', '>\b0', [rfIgnoreCase,rfReplaceAll]);
memo1.Lines.SaveToFile('c:\test.rtf');
end;
Verwendet:
Richedit, in das der User schreibt.
Memo, invisible, zum Text ersetzen, da kann man bestimmt noch was anderes machen.


Ciao fkerber

Xeno-Sebi 25. Mär 2004 07:12

Re: formatierung von Text im TRichEdit
 
hm...
also das entspricht im prinzip meiner Lösung...Ich wollte eigentlich verhindern, die Datei zu speichern, da das später nicht per button1.click, sondern durch einen timer geschehen soll. Da das andauernde speichern aber ziemlich auf die systemresourcen gehen kann, wollte ich das richtextformat manuell benutzen, ohne diesen "speicher-lade-weg" zu benutzen

fkerber 25. Mär 2004 12:25

Re: formatierung von Text im TRichEdit
 
Hi!

Versuch vielleicht mal das ganze mit Streams zu machen. Wär vielleicht eine Idee.

Ciao fkerber

Xeno-Sebi 25. Mär 2004 13:30

Re: formatierung von Text im TRichEdit
 
lol hab ich auch schon versucht...recht erbärmliches ergebnis, aba das liegt nur daran, dass ich noch nie mit streams geabreitet habe und so nur runtimefehler rauskamen, die ich nicht gecheckt habe...werde mir wohl mal ein paar tuts dazu angucken müssen^^

Xeno-Sebi 25. Mär 2004 14:11

Re: formatierung von Text im TRichEdit
 
ICH HABS!!!!


falls es jemdanden interessiert:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var codetext:TRichEdit;
Begin
codetext:=TRichEdit.Create(Form1);
codetext.PlainText:=true;
codetext.text:='{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil MS Sans Serif;}}\viewkind4\uc1\pard\f0\fs16';
codetext.text:=codetext.text+StringReplace(text.text, '<', '\b<', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, '>', '>\b0', [rfIgnoreCase,rfReplaceAll]);
codetext.text:=StringReplace(codetext.text, chr(13), '\par', [rfIgnoreCase,rfReplaceAll])+'}';
text.text:=codetext.text;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.

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