Zitat von
r2c2:
Ich nehm mal an TRichEdit kommt nicht mit klar, wenn du den Formatcode direkt reinschreibst.
Genau. Du kannst RTF nicht häppchenweise hineinfüttern. Arbeite doch der Einfachheit halber erst einmal mit einem String, an den du die einzelnen Fragmente einfach mit + anhängst. Abschließend setzt du den Text mit
RichEdit1.Perform(WM_SETTEXT, 0, Integer(PChar(Str))
Ebenfalls wichtig:
1. Ersetze alle \, { und } durch \\, \{ und \}
2. Ersetze alle Zeilenumbrüche durch \par
Danach kannst du dich um die Formatierung kümmern, dies muss aber
nicht zeilenweise geschehen, du kannst das StringReplace einfach auf mChangeLog.Lines.Text loslassen.
// NACHTRAG
Außerdem solltest du hinter den RTF-Steuerzeichen jeweils ein Leerzeichen lassen, also
'[ b]' wird zu '\b '
'[ /b]' wird zu '\b0 '
'[ i]' wird zu '\i '
'[ /i]' wird zu '\i0 '
Die meisten Formatierungen kann man mit 0 (Null) dahinter wieder ausschalten. Dann sparst du dir die Klammern, die würden sowieso Fehler geben wenn der
BBCode nicht korrekt geschachtelt ist.