RichEdit - Syntax Highlighting mit OpenDialog



  • Hallo erstmal an alle. Ich poste hier zum ersten mal. Dabei gleich ein paar Worte vorweg:
    Ich bin ein C++ Neueinsteiger, also nicht über teils selbstverständliche Dinge wundern...

    FAQ etc. habe ich durchwühlt. Genauso das halbe Inet 🙂

    Ich habe mir mit einem RichEdit Feld einen Editor gebastelt, wobei ich auf das Syntax Highlighting aus dem FAQ zurückgreife. Funzt soweit wunderbar, solange ich den Text eingebe.
    Außerdem habe ich eine Open- und Save-Funktion reingebstelt. Das RE-Feld speichert den Text als reine TXT-Datei ab. Wenn ich nun eine Datei hineinlade, funktioniert das Highlighten nicht mehr.
    Ich vermute das liegt an daran, dass das RE-Feld Zeile für Zeile ausgelesen wird. Leider fehlen mir hier die Kenntnisse und das Verständnis.
    Vielleicht hat hier jemand eine Idee, wie ich auch beim Öffnen einer Datei noch nachträglich den Syntax hervorheben kann.
    Das selbe Problem zeigt sich bei Copy-Paste-Vorgängen, die sich über mehrere Zeilen erstrecken.



  • 1. wie öffnest du denn deine text-datei (und was machst du danach)?
    2. wie rufst du dein syntax-highlightning auf, wenn du text eingibst (eigene funktion)?
    3. syntax-h. beim öffnen -> ... sollte ja nun nicht mehr schwer sein



  • 1. Das auslesen geschieht über einen TOpenDialog.

    RichEdit->Lines->LoadFromFile(OpenDialog->FileName)
    

    2. Zur Zeit stehen die Funktionen, wie im FAQ, direkt in meiner Programm Datei.
    Soll heißen: Die Funktion CanAvoidHighlight schubst alles an.
    Das Ereignis liegt auf meinem RichEdit OnChange.
    Kurz:

    void __fastcall TForm1::RichEditChange(TObject *Sender)
    {
    if(!CanAvoidHighlight()
    {HighlightWords(clBlue);}
    }
    

    Diese Funktion überprüft bei Eingabe wie gesagt wunderbar, nur beim Copy-Paste und öffnen einer Datei leider nicht.
    Ich hoffe das hilft weiter...
    3. Meinst du ich sollte eine eigene Header Datei basteln?



  • Vielleicht rufst du selber mal das Change-Event auf nachdem die File geladen ist?

    -junix



  • Auf die Idee war ich auch schon gekommen, hat nur leider nicht funktioniert.
    Ich denke, das Problem liegt in dem zeilenweise auslesen.



  • Schon mal nachgeschaut was beim parsen genau passiert? (Stichwort Debugger)

    -junix



  • Nope bis jetzt noch nicht, werde ich aber mal tuen. Kann ja nicht schaden...

    Hmm da fällt mir doch gleich ne Frage ein:
    Was sollte man denn überwachen, bzw. auf welche Sachen sollte man da achten?

    [ Dieser Beitrag wurde am 24.02.2003 um 20:55 Uhr von BoehserWolf editiert. ]



  • Lies das was hinter dem Link steht...

    -junix


Anmelden zum Antworten