Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Unihighlighter verursacht komischen Fehler


Jukka - So 27.08.06 22:33
Titel: Unihighlighter verursacht komischen Fehler
Hallo,
Ich hab ein Problem. Undzwar lad ich den Text in ein SynEdit Feld ohne irgendwas und das geht ja ganz normal Ohen fehler.
Nun wollte ich den text Highlighten mit der SynUniSyn Komponente des Unihiglighters. Ich habe es nach dem Beispielcode gemacht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
{...}
    Edit: TSynEdit;
    SynUniSyn: TSynUniSyn;
{...}
procedure TForm1.Button2Click(Sender: TObject);
var kw:TSynSymbolGroup;
begin
        SynUniSyn.MainRules.Reset;
        Edit.Highlighter:=nil;

          kw:=TSynSymbolGroup.Create('',TSynHighlighterAttributes.Create(''));
          kw.Attribs.Foreground:=clRed;
          kw.KeywordsList.Add('<?');
          kw.KeywordsList.Add('?>');
          SynUniSyn.MainRules.AddSymbolGroup(kw);

          Edit.Highlighter:=SynUniSyn;
          edit.Refresh;
end;


die beiden <? und ?> werden rot hervorhehoben wie es auchs ein soll, nur macht der highlighter aus dem letzten word (bzw zeichen) 2, also:

aus ; wird ;;
aus ) wird ))
aus aa wird aaaa
usw ...




usw ..

Kann mir da jemand helfen?

Edit: ich habe schon versucht mit stringreplace das zu beheben, dies geht aber nicht. Kopier ich den text (mit den fehlern) aus den SynEdit Feld in ein Memo feld ist der text ganz noramal im Memo Feld