AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SyntaxHighlighting

Ein Thema von AnyKey · begonnen am 28. Sep 2009 · letzter Beitrag vom 5. Mär 2010
 
AnyKey

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

Re: SyntaxHighlighting

  Alt 5. Mär 2010, 09: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz