AGB  ·  Datenschutz  ·  Impressum  







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

Bestimmte Wörter anders zeigen

Ein Thema von A-M-X · begonnen am 17. Jan 2006 · letzter Beitrag vom 18. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
A-M-X

Registriert seit: 29. Sep 2005
Ort: Karlsruhe
152 Beiträge
 
#1

Bestimmte Wörter anders zeigen

  Alt 17. Jan 2006, 19:45
Huhu!

Habe vor einiger Zeit von einem Kumpel einen Code gekriegt (habe ihn gefragt wie das geht ^^):

"Wie drucke ich bestimmte Wörter in einem RichEdit anderst?"

Er hat mir einen sehr guten Code gegeben:

Delphi-Quellcode:

procedure TForm1.RichEdit1Change(Sender: TObject);
const
  AMarkedWords : array [1 .. 106] of String = ('unit', 'interface', 'uses', 'type', 'class', 'procedure', 'private', 'public', 'end;', 'end', 'end.', 'var', 'implementation', 'array', 'of', 'string', 'to', 'goto', 'with', 'do', 'for', 'while', 'mod', 'if', 'then', 'begin', 'const', 'else', 'repeat', 'xor', 'label', 'try', 'finally', 'except', 'overload', 'stdcall', 'inherited', 'div', 'interface', 'not', 'stored', 'default', 'read', 'write', 'absolute', 'assembler', 'and', 'as', 'asm', 'at', 'case', 'cdecl', 'downto', 'exports', 'external', 'far', 'file', 'finally', 'forward', 'goto', 'in', 'index', 'inline', 'library', 'name', 'mear', 'nodefault', 'nil', 'not', 'of', 'or', 'on', 'program', 'raise', 'record', 'resident', 'set', 'shl', 'shr', 'finalization', 'packed', 'protected', 'resourcestring', 'threadvar', 'initialization', 'abstract', 'class', 'constructor', 'destructor', 'dynamic', 'inherited', 'is', 'message', 'object', 'property', 'override', 'publishes', 'read', 'stored', 'virtual', 'dispinterace', 'packed', 'protected', 'resourcestring', 'threadvar', 'until');
var
  BufferPosition : LongInt;
  BufferText : String;
  Index : LongInt;
  MySelLength : LongInt;
  MySelStart : LongInt;
begin
  MySelStart := RichEdit1.SelStart;
  MySelLength := RichEdit1.SelLength;

  RichEdit1.SelStart := 0;
  RichEdit1.SelLength := Length(RichEdit1.Text);

  RichEdit1.SelAttributes.Color := clBlack;
  RichEdit1.SelAttributes.Style := [];

  RichEdit1.SelStart := 0;
  RichEdit1.SelLength := 0;
 
  for Index := Low(AMarkedWords) to High(AMarkedWords) do
  begin
    BufferPosition := 0;
    BufferText := RichEdit1.Text;
 
    while (Pos(Trim(LowerCase(AMarkedWords[Index])), LowerCase(BufferText)) > 0) do
    begin
      RichEdit1.SelStart := BufferPosition + Pred(Pos(Trim(LowerCase(AMarkedWords[Index])), LowerCase(BufferText)));
      RichEdit1.SelLength := Length(Trim(AMarkedWords[Index]));
 
      RichEdit1.SelAttributes.Color := clNavy;
      RichEdit1.SelAttributes.Style := [FsBold];
 
      BufferPosition := BufferPosition + Pred(Pos(Trim(LowerCase(AMarkedWords[Index])), LowerCase(BufferText))) + Length(Trim(AMarkedWords[Index]));
      BufferText := Copy(BufferText, Pos(Trim(LowerCase(AMarkedWords[Index])), LowerCase(RichEdit1.Text)) + Length(Trim(AMarkedWords[Index])), Succ(Length(BufferText) - (Pos(Trim(LowerCase(AMarkedWords[Index])), LowerCase(RichEdit1.Text)) + Length(Trim(AMarkedWords[Index])))));
    end;
  end;

  RichEdit1.SelStart := MySelStart;
  RichEdit1.SelLength := MySelLength;

  RichEdit1.SelAttributes.Color := clBlack;
  RichEdit1.SelAttributes.Style := [];

end;
NUR:

wenn ich z.B. NUR "in" fett gedruckt haben will, druckt er bei "string" folgendermaßen:

String

Also er druckt das "in" in "strINg" auch fett. Wie behebe ich das? ^^

Edit: und wie behebe ich dieses Flackern beim schreiben. wenn ich "hallo" eingebe flacktert es und dauert ewig lang bis es da steht -> habe einen code eingefügt und will am ende noch was schreiben, wenn es leer ist und ich schreibe, flackerts und hängts ned, wenn ich aber wiederum einen langen code einfüge und dann am ende schreibe flackerts und hängts total

[edit=sakura] L E E R Z E I C H E N eingefüt. Mfg, 桜[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Bestimmte Wörter anders zeigen

  Alt 17. Jan 2006, 19:49
simpelste lösung: nicht 'in' sondern z.B. ' in ' highlighten

Flackern: am Anfang BeginUpdate; und am ende EndUpdate
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Bestimmte Wörter anders zeigen

  Alt 17. Jan 2006, 19:51
Ich möchte dich nicht entmutigen, aber wenn du einen Pascal-Highlighter schreiben möchtest, wie es dein Array andeutet, geht das mit dem SynEdit deutlich einfacher und wesentlich performanter. Da hast du dann auch eine Zeilennummerierung, sofern du es einstellst etc.

Code zu highlighten ist beim SynEdit für viele Sprachen einfaches Zusammenklicken von Komponenten und dauert keine 2 Minuten.

Wenn du natürlich etwas lernen möchtest, ist das SynEdit witzlos.
  Mit Zitat antworten Zitat
A-M-X

Registriert seit: 29. Sep 2005
Ort: Karlsruhe
152 Beiträge
 
#4

Re: Bestimmte Wörter anders zeigen

  Alt 18. Jan 2006, 13:48
@jfheins:

Wie BeginUpdate und EndUpdate? wohin?

@Matze:
Hab ich schonma probiert aber ich kann komischerweise nicht richtig Komponenten installieren.
Haste vllt icq oder n messenger wo wir uns ma "treffen" könnten und du mir das erklären könntest (natürlich nur, wenn es dir keine Umstände macht )

thx
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Bestimmte Wörter anders zeigen

  Alt 18. Jan 2006, 13:59
Zitat von A-M-X:
@jfheins:

Wie BeginUpdate und EndUpdate? wohin?
An Anfang und Ende der Prozedur, hat er doch geschrieben .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
A-M-X

Registriert seit: 29. Sep 2005
Ort: Karlsruhe
152 Beiträge
 
#6

Re: Bestimmte Wörter anders zeigen

  Alt 18. Jan 2006, 14:01
das geht aber irgendwie ned.. der dagt "undefinierter bezeichner"
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Bestimmte Wörter anders zeigen

  Alt 18. Jan 2006, 14:07
so:
Delphi-Quellcode:
richedit1.beginupdate;
blablabla;
richedit1.endupdate;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
A-M-X

Registriert seit: 29. Sep 2005
Ort: Karlsruhe
152 Beiträge
 
#8

Re: Bestimmte Wörter anders zeigen

  Alt 18. Jan 2006, 14:11
geht auch nicht o.o

-> glaube mit ner komponente wäre das besser. synedit hab ich nur da sind soviele ordner usw. o.o was davon soll ich installieren? ^^
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Bestimmte Wörter anders zeigen

  Alt 18. Jan 2006, 14:12
hm, und wieso? was zeigt er dir denn an?
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
A-M-X

Registriert seit: 29. Sep 2005
Ort: Karlsruhe
152 Beiträge
 
#10

Re: Bestimmte Wörter anders zeigen

  Alt 18. Jan 2006, 14:15
Undefinierter Bezeichner...
Ich glaub da selber rumzuschreiben bringts ned. weiss einer wie man die SynEdit Komponente installiert? *gg*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz