AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Weiterentwicklung TRichEdit zu Syntax-Lighting Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Weiterentwicklung TRichEdit zu Syntax-Lighting Komponente

Ein Thema von Dosenelepfand · begonnen am 13. Sep 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Dosenelepfand

Registriert seit: 13. Sep 2006
19 Beiträge
 
Delphi 5 Enterprise
 
#1

Weiterentwicklung TRichEdit zu Syntax-Lighting Komponente

  Alt 13. Sep 2006, 11:09
Hallo!

Ich versuche derzeit, einen Unicode-fähigen Syntax-Lighting Editor zu schreiben. Dazu wollte ich die Komponente TTNTRichEdit aus der TNT-Bibliothek als Grundlage verwenden.

Ich habe nun eine Klasse geschrieben, die die Informationen über die gewünschte Färbung von Bereichen, Schlüsselwörtern etc. aus einer XML Datei einliest, sichert und in der Lage ist, einen Text nach diesen Informationen zu formatieren.
Genau genommen wird im letzten Schritt der Plaintext nach Bereichen / Schlüsseln durchforstet und ein RTF-Code generiert. Wichtig hierbei: ich speichere den RTF-Code für jede Zeile einzeln und verwende dafür eine TTNTStringList. Bei einem Update werden stets nur die wirklch betroffenen Zeilen neu formatiert und ihr RTF-Code generiert. Dies sei gesagt, da mein Problem die Geschwindigkeit ist, und ich somit recht sicher bin, dass es nicht am eigentlichen Parsing-Vorgang liegt.
Nachdem der RTF-Code generiert wurde, werden - und das scheint wichtig - die RTF-Zeilen in der TTNTStringList zu einem Gesamtstring zusammengefügt (dazu benutze ich schlicht die Eigenschaft TTNTStringList.Text), der RTF-Kopf hinzugefügt und der so generierte RTF-Code vollständig an das TTNTRichEdit übergeben.
Diese Aktualisierung des RTF-Codes und die anschließende Komplettübergabe an das TTNTRichEdit wird bei jedem Tastendruck durchgeführt.

Vom Verfahren funktioniert alles wunderbar. Problem ist allerdings die Geschwindigkeit. Bei großen Datein wird die Komponente langsam. Da ich, wie oben gesagt, recht sicher bin, dass es nicht am Parsing-Vorgang liegt, vermute ich, dass das stetige komplette Setzen des RTF-Codes der Komponente die Schwierigkeiten bereitet. Leider habe ich auch keine Idee, wie ich dies umgehen könnte, da man den RTF-Code der einzelnen Zeilen nicht setzen kann.

Hat jemand eine Idee, wie dieses Geschwindigkeitsproblem behoben werden könnte?

Muss ich vielleicht sogar auf ein anderes, keinen RTF-Code generierendes Verfahren umsteigen?


Liebe Grüße und Dank im Voraus,
Der/Das Dosenelepfand
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Weiterentwicklung TRichEdit zu Syntax-Lighting Komponent

  Alt 13. Sep 2006, 11:10
Schau dir doch mal SynEdit an.
Markus Kinzler
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Weiterentwicklung TRichEdit zu Syntax-Lighting Komponent

  Alt 13. Sep 2006, 11:12
Synedit kann doch mittlerweile Unicode.
Und ein RichEdit ist so verflucht lahm, das willst du gar nicht dafür hernehmen, glaub' mir.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Dosenelepfand

Registriert seit: 13. Sep 2006
19 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Weiterentwicklung TRichEdit zu Syntax-Lighting Komponent

  Alt 13. Sep 2006, 11:16
Hallo ihr zwei.

@ Elvis:
D.h. also, dass ich, wenn ich eine solche Komponente selbst schreiben möchte, nicht auf einem RichEdit aufbauen sollte? Was gäbe es für Alternativen? Könnte ich bereits bestimmte Funktionalitäten einer anderen Komponente nutzen, oder muss ich in diesem Falle die Komponente von Grund auf selbst schreiben (d.h. auch den Text selbst drucken)?


Liebe Grüße,
Der/Das Dosenelepfand
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Weiterentwicklung TRichEdit zu Syntax-Lighting Komponent

  Alt 13. Sep 2006, 12:10
Du könntest auf SynEdit aufbauen oder schauen wie die es gelöst haben.
SynEdit handhabt Einfärben & Co aber selbst, ein RichEdit ist einfach zu lahm um als CodeEditor zu taugen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:53 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