Thema: Delphi SyntaxHighlighting

Einzelnen Beitrag anzeigen

AnyKey

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

Re: SyntaxHighlighting

  Alt 5. Mär 2010, 10:21
Hi,

also ich weiß jetzt wo mein Fehler liegt!

hier noch mal der Quellcode:
Delphi-Quellcode:
neuStart := 22;
for j := 0 to RichEdit1.Lines.Count-1 do
begin
  for i := 0 to spaltenZahl-1 do
  begin
    if spaltenInhalt.teltype[i] = StrToInt(copy(Trim(RichEdit1.Lines.Strings[j]),23,2)) then
    begin
      RichEdit1.SelStart := neuStart;
      RichEdit1.SelLength := spaltenInhalt.laenge[i]; //Length(RichEdit1.Lines.Strings[OldLine-1])+2;
      if myColor = clBlack then
      begin
        myColor := clLime;
      end
      else
      begin
        myColor := clBlack;
      end;
      RichEdit1.SelAttributes.Color := myColor;
      if i < spaltenZahl-1 then
      begin
        RichEdit1.SelLength := 0;
        neuStart := neuStart + spaltenInhalt.laenge[i];
      end;
    end;
  end;
  neuStart := (Length(RichEdit1.Lines.Strings[j])+2)+22;
end;
In Dieser Zeile ist der Fehler:
neuStart := (Length(RichEdit1.Lines.Strings[j])+2)+22; Ich nehme hier die Länge der Spalte +2 (wegen Zeilenumbruch) und noch einmal +22 um an die Stelle ab der eingefärbt werden soll zu kommen. Was ich aber eigentlich machen müsste wäre: neuStart = neuStart + ((der Rest der Zeile ab neustart)+2)+22

Der Rest des Codes scheint zu stimmen

Edit: Also ich habs geschafft, es scheint jetzt alles richtig zu funktionieren Ich hab einfach noch einen Merker eingebaut, der mir die Länge der einzelnen eingefärbten Strings zusammenzählt und dann später von der Gesamtlänge der Zeile abzieht, damit ich dann in der Nächsten Zeile über die Variable neuStart wieder direkt an die Stelle komme, ab der gehighlightet werden soll

Hier noch der richtige Code:

Delphi-Quellcode:
neuStart := 22;
for j := 0 to RichEdit1.Lines.Count-1 do
begin
  LenMerker := 0;
  for i := 0 to spaltenZahl-1 do
  begin
    if spaltenInhalt.teltype[i] = StrToInt(copy(Trim(RichEdit1.Lines.Strings[j]),23,2)) then
    begin
      RichEdit1.SelStart := neuStart;
      RichEdit1.SelLength := spaltenInhalt.laenge[i];
      LenMerker := LenMerker + spaltenInhalt.laenge[i];
      if myColor = clBlack then
      begin
        myColor := clLime;
      end
      else
      begin
        myColor := clBlack;
      end;
      RichEdit1.SelAttributes.Color := myColor;
      if i < spaltenZahl-1 then
      begin
        RichEdit1.SelLength := 0;
        neuStart := neuStart + spaltenInhalt.laenge[i];
      end;
    end;
  end;
  neuStart := neuStart + ((Length(RichEdit1.Lines.Strings[j])-LenMerker)+2);
end;
Danke noch mal allen die mir geholfen haben

Gruß
AnyKey
  Mit Zitat antworten Zitat