Hallo Hügel,
wenn du SelLength auf einen negativen Wert setzen willst, dann musst du dich etwas mehr anstrengen - intern wird nur mit dem Betrag gearbeitet. Das Abschneiden, Löschen und Formatieren jeweils eines einzelnen Zeichens ist auch nicht gerade der Hit. Hier ein kleiner Ausschnitt aus einem Programm, mit dem ich selbst solche Style-Infos zeilenweise verarbeite. Vielleicht hilft dir das ja bei der Verbesserung deines Codes. Die Funktion Strip() zerlegt einen String beim ersten Auftreten eines Delimiters und StripStyle() extrahiert die Style-Codes und merkt sie sich in CurrentStyle.
Delphi-Quellcode:
procedure TMainForm.ProcessLine(line: string);
var
s: string;
begin
RichEdit.Lines.Add('');
while line <> '' do begin
s := Strip(line, '[', pmSingle);
RichEdit.SelStart := Length(RichEdit.Text) - 2;
RichEdit.SelAttributes.Style := CurrentStyle;
RichEdit.SelText := s;
if line <> '' then
StripStyle(line);
end;
end;
Grüße vom marabu