Thema: Delphi SyntaxHighlighting

Einzelnen Beitrag anzeigen

AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#1

SyntaxHighlighting

  Alt 28. Sep 2009, 10:36
Hi,

ich muss in einem RichEdit ein Syntaxhighlighting durchführen. Mein bisheriger Code sieht so aus:

Delphi-Quellcode:
Textlen := Edit.GetTextLen;
    Linelen := Edit.Lines.Count;
    for i := 0 to Linelen do
    begin
      with Edit do
      begin
        x := posex('[',Edit.Text,x)+1;
        SelStart := x-15;
        SelLength := 12;
        SelAttributes.Color := clRed;
        SelAttributes.Style := [fsBold];
        ProgressBar.Position := ProgressBar.Position + 1;
      end;
    end;
    x := 0;
    for i := 0 to Linelen do
    begin
      with Edit do
      begin
        x := posex('[',Edit.Text,x)+1;
        SelStart := posex('[',Edit.Text,x)-1;
        SelLength := 25;
        SelAttributes.Color := clGreen;
        SelAttributes.Style := [fsBold];
        ProgressBar.Position := ProgressBar.Position + 1;
      end;
    end;
Ich hatte also genaue punkte, an denen ich das Syntaxhighlighting durchführen musste, nach denen ich im Text suchen konnte. Jetzt sieht es so aus, dass ich später aus einer XML Datei die Infos bekomme, wie Lang die strings sind, etc. Diese Datensätze sehen dann ungefähr folgendermaßen aus:

Uhrzeit Fehler : FehlertextFehlerquelleFüllzeichenGerätenummerFüllz eichenAuftragsnummerFüllzeichen

Das ganze ist dann so etwa 120 zeichen lang. Jetzt soll folgendes passieren, es sollen Fehler, Fehlertext, Gerätenummer, Auftragsnummer (nur als Beispiel) hervorgehoben werden. Jetzt meine frage, wie schaffe ich es diese Textstellen zu highlighten, wenn ich nicht wie vorher bestimmte Zeichen hab an denen ich fest machen kann wann ich highlighte und wann nicht, sondern nur die Zeichenlänge habe. Ich habe es schon einmal versucht einfach über die Länge und die Position zu machen, allerdings wird das dann nur in der ersten Zeile geändert und nicht im ganzen Text. Weiß jemand wie ich das hinbekomme immer an der stelle zu highlighten wo sich diese Info befindet?

Hoffe mir kann jemand helfen!

Gruß
AnyKey
  Mit Zitat antworten Zitat