Text formatieren



  • Hallo,

    Ich habe einen Text der über eine Spezielle Formatierung farbig wird:

    Formatierter Text:
    Das ist rot, das ist blau

    Plaintext:
    Das ist FF0000rotFFFFFF, das ist ^0000FFblau

    Edit: 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


Anmelden zum Antworten