Przyspieszenie update'u Richedit'a

0

mam taki kod ktory odpowiednio koloruje skladnie HTML.

procedure HTMLSyntax(RichEdit: TRichEdit; TextCol, TagCol, DopCol: TColor); 
var  
  i, iDop: Integer; 
  s: string; 
  Col: TColor; 
  isTag, isDop: Boolean; 
begin 
  iDop := 0; 
  isDop := False; 
  isTag := False; 
  Col := TextCol; 
  RichEdit.SetFocus; 

  for i := 0 to Length(RichEdit.Text) do 
  begin 
    RichEdit.SelStart := i; 
    RichEdit.SelLength := 1; 
    s := RichEdit.SelText; 

    if (s = '<') or (s = '{') then isTag := True; 

    if isTag then 
      if (s = '"') then 
        if not isDop then 
        begin 
          iDop  := 1; 
          isDop := True; 
        end  
        else 
          isDop := False; 

    if isTag then 
      if isDop then 
      begin 
        if iDop <> 1 then Col := DopCol; 
      end  
      else 
        Col := TagCol 
    else 
      Col := TextCol; 

    RichEdit.SelAttributes.Color := Col; 

    iDop := 0; 

    if (s = '>') or (s = '}') then isTag := False; 
  end; 
   
  RichEdit.SelLength := 0; 
end;

Niestety jest jest stanowczo za wolny proces,, szczegolnie w duzych plikach.
Moje pytanie brzmi: czy da sie przyspieszyc te procedurke, czy da sie update'owac tylko edytowana linijke? (wiem jak pobrac linie)

0

Wydaje mi sie że updatowanie tylko linijki, która jest aktualnie edytowna nie da dobrych rezultatów. Jeżeli zamierzasz zrobić to tak jak np. w Pajaczku to zmiana czegoś w jednej linijce czasami zmienia też kolorowanie w linijkach ponizej. Więc jak już coś to zrob sobie kolorowanie linijek poniżej edytowanej linii.

[dopisane]

jesli wstawie cos do nastepnej linijki programowo to bede o tym wiedzial i to obsluze, ale uzytkownik w danej chwili moze edytowac tylko 1 linijke

Tak, ale zmiany czegoś w jednej linijce mogą wpłynąć na zmianę kolorowania w innej bez bezpośredniej ingerencji w tamtą.

0

jesli wstawie cos do nastepnej linijki programowo to bede o tym wiedzial i to obsluze, ale uzytkownik w danej chwili moze edytowac tylko 1 linijke :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1