Text formatieren
-
Hallo,
Ich habe einen Text der über eine Spezielle Formatierung farbig wird:
Formatierter Text:
Das ist rot, das ist blauPlaintext:
Das ist FF0000rotFFFFFF, das ist ^0000FFblauEdit: Die farbe wird hier leider nicht angezeigt im forum mit [color]
NUn wollte ich fragen wie mache ich es am besten das ich das mit einem RichEdit in der Farbe dargestellt wird wie es in echt sein soll?
Ich meine nicht wie ich es farbig mach, sondern das auslesen das der an der richtigen Stelle die Farbe einsetzt. Und auch wieder zurück.Ich hoffe da kann mir jemand helfen.
~Jukka
-
Hallo
Wenn du so ein selbstgestricktes Format hast, must du es auch selber parsen und auswerten. Du solltest besser gleich das ganze als RTF speichern und laden.
bis bald
akari
-
Ds ist es ja, wie parse ich das so am besten?
-
Hallo
Der Builder (wobei ich nur bis Version 5 kenne) bietet keine spezielle Funktionen dafür, da müßtest du mit den normalen AnsiString-Funktionen arbeiten (::AnsiPos, SubString, Delete)
bis bald
akari
-
Hm ok, das sollte ich noch hinbekommen. Nur noch die Frage: Wir kann ich es aus dem Formatierten Text heraus wieder "zurückparsen", weil ja keine anzeigen für die Farbe im text stehen irgendwie.
-
Hallo
Da ist es wohl am einfachsten du speicherst das als RTF ab und schaust dir das Ergebnis im Klartext an. Dort siehst du was im RTF-Format für Tags verwendet die du dann einfach durch deine eigenen ersetzen must.
bis bald
akari
-
Hallo,
Nun ich wollte erstmal zum Testen eine Funtion schreiben die wenn eine Formatierung gefunden wird die ganze Zeile färbt jedoch gibt es dort ein Problem:
void ParseIncomingText(TMemo *Text, TRichEdit *FormatedText) { for (int i = 0; i < Text->Lines->Count; i++) { if(Text->Lines->Strings[i].Pos("^") > 0) { FormatedText->Lines->Add(Text->Lines->Strings[i]); int Color = ConvertToColor( FormatedText->Lines->Strings[FormatedText->Lines->Count-1]. SubString(FormatedText->Lines->Strings[FormatedText->Lines->Count-1].Pos("^")+1 ,6) ); FormatedText->Lines->Strings[i].Delete(FormatedText->Lines->Strings[FormatedText->Lines->Count-1].Pos("^"),6); FormatedText->SelectAll(); FormatedText->SelAttributes->Color = Color; } } }ConvertToColor st eine Funktion zum umwandeln des Strings in TColor die funktioniert. Wenn ich mir Color ausgeben lasse istd er wert richtig.
Die funktion Schreibt den Text dann auch in der Richtigen Farbe in das RichEdit. Jedoch löscht das Hex nicht. Und ich weiß auch ncicht wie ich es am besten machen woll wenn da mehere formationen sind.Ich überlege daran es mit sscanf zu probieren
-
Hallo
Bleib besser bei VCL-Mitteln und benutzt den Debugger um den Verlauf deines Programmes sowie die Werte in den Variablen Schritt für Schritt durchzugehen.
bis bald
akari