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