![]() |
Was macht WordPad besser als ein TRichEdit-Control?
Hallo,
es geht um das Laden von größeren RTF-Files in eine RichEdit-Komponente. Da diese Files u.U. (nicht oft aber..) auch mal 10000 Zeilen oder mehr groß sind, dauert das Laden bis zur Anzeige des Textes dann auch schonmal 8-9 Sekunden (bzw. noch mehr). Also schlicht eine zu lange Zeit, in der sich das Programm nicht mehr rührt. Wenn ich den gleichen File aber ins WordPad lade, dann taucht der dort sofort auf, und ich kann ihn auch sofort nach seinem Auftauchen dort weiter bearbeiten. Also alles ohne diese 8-9 Sekunden Wartezeit. Irgendwie wundert mich jetzt einfach dieser Unterschied. Denn imho baut doch das WordPad auch selbst wieder auf einem RichEdit-Control auf (wenigstens war das bisher immer so der Fall). Für mich wäre es jetzt also interessant zu wissen, was das WordPad beim Laden von (solch langen) RTF-Files anders macht als eine TRichEdit-Komponente. Warum ist das WordPad hierbei soviel schneller? Und könnte man eine TRichEdit-Komponente auch irgendwie dazu bringen, das ebenfalls so schnell hinzukriegen? Thx schonmal im Voraus. PS. Könnte hier das Jedi-RichEdit eventuell eine Verbesserung bringen? PPS. Dieser Wartezeiteffekt tritt übrigens ebenfalls auf, wenn man so einen RTF-Text mittels der RichEdit.LoadFromStream()-Methode läd (z.B. nachdem man zuerst zum Zweck eben einer Zeiteinsparung einen Normal-Text in einem Stream selbst mit rtf-Tags bestückt hat). Gleiche Wartezeiten auch, wenn ich stattdessen die EM_SetTextEx-Message oder die EM_StreamIn-Message benutze. |
Re: Was macht WordPad besser als ein TRichEdit-Control?
Benutzt du denn z.B. BeginUpdate und EndUpdate? Ich weiß nicht, ob die auch beim laden einer kompletten Datei etwas bringen, aber bei einzelnen Zeilen bringen die sehr sehr viel. Vielleicht ja auch bei dir.
Ich muss das mal selbst testen mit einer großen Datei. |
Re: Was macht WordPad besser als ein TRichEdit-Control?
Eventuell läd WordPad nicht die gesame Datei aufeinmal, sondern immer nur den Teil dr gebraucht/angezeigt wird. Allerdings bin ich mir nicht sicher, ob sich Microsoft die Mühe gemacht hat das zu implementieren.
|
Re: Was macht WordPad besser als ein TRichEdit-Control?
Zitat:
Alternativ schau dir mal ![]() |
Re: Was macht WordPad besser als ein TRichEdit-Control?
Ich weiß auch nicht, welche RichEdit Version Delphi benutzt. Vielleicht kapselt es noch eine ältere Version.
|
Re: Was macht WordPad besser als ein TRichEdit-Control?
Zitat:
Anders wäre Delphi aber auch nicht auch mit alten Windowsversionen kompatibel, es sei denn es gäbe eine Unterscheidung. BeginUpdate..EndUpdate bringt bei 100.000 Zeilen und 10 MiB Dateigröße bei mir ca. 1 Sekunde. Ohne sind es 3,4 Sekunden, mit sind es 2,3 Sekunden beim Laden. Das ist exakt so schnell wie WordPad bei mir. |
Re: Was macht WordPad besser als ein TRichEdit-Control?
thx @all,
@Bernhard Geyer, wie ich darauf komme? Das habe ich hier irgendwo schon ein paar mal gelesen. Immer so ala: Das NotePad hat ein Memo drunter und das WordPad ein RichEdit. Mit einem TRichView (habe mal schnell eine Demo gedownloaded) geht das Laden übrigens genauso schnell wie bei WordPad. Ist allerdings auch nicht gerade billig mit > 200$ (?). @jaenicke, also bei mir bringt das BeginUpdate/EndUpdate vor und hinter der LoadFromFile-Zeile irgendwie gar nichts. Mein rtf-File hat dabei etwas mehr als 12000 Zeilen, ist ca. 795KB groß und der fast gesamte Text ist da ziemlich formatiert. In beiden Fällen brauch ich hier immer so etwa 7,45 Sekunden. Und bezüglich einer event. möglichen alten RichEdit-Version (habe ja auch noch das Turbo Delphi): Eventuell könnte hier ja mal jemand mit einer neuern Version (und einer alten) das irgendwie gegenchecken? Wenn es daran liegt, könnte diese Frage so jedenfalls einigermaßen leicht beantwortet werden. Und für den Fall, es würde an einer alten Version liegen und man hätte jetzt ein Delphi mit einer neueren RichEdit-Kompo: Wäre das Prog. dann eigentlich auch noch bis W2k runter laufbar? Denn bis dahin wollte ich die Laufbarkeit meines Progs eigentlich immer aufrecht erhalten. |
Re: Was macht WordPad besser als ein TRichEdit-Control?
Zitat:
Alles getestet unter Vista mit wie gesagt 100.000 Zeilen. Delphi 2006 2,3 Sekunden, Delphi 2009 3,8 Sekunden, Wordpad 2,5 Sekunden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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 by Thomas Breitkreuz