Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi schnelle Alternative für TMemo (https://www.delphipraxis.net/134874-schnelle-alternative-fuer-tmemo.html)

yogie 31. Mai 2009 08:09


schnelle Alternative für TMemo
 
Hallo zusammen,

gibt es eine schnellere Alternative zu TMemo ?

Hintergrund : Ich möchte eine relativ große Textdatei (ca. 100000 Zeile)
einlesen und dabei anzeigen. Ohne die Anzeige in einem Memofeld geht das
innerhalb sehr kurzer Zeit. Bei einer gleichzeitigen Anzeige in einem
Memofeld braucht das Programm ca. 40 Sekunden.

Eigentlich ist das Einlesen nur ein Test. In Wirklichkeit geht es um die
Anzeige von vielen Datensätzen die wahlweise über Ethernet oder RS232 schnell
hintereinader beim Programm eintreffen. Die Variante mit der Datei habe
ich nur programmiert, um von eventuellen Seiteneffekten unabhängig zu sein.

Ich verwende DELPHI 6 Prof. unter WIN XP SP2

Schöne Pfingsten

Satty67 31. Mai 2009 09:05

Re: schnelle Alternative für TMemo
 
Also hab' mir eine Test-Textdatei mir 100.000 Zeilen angelegt. Wie Du schon geschrieben hast dauert das Laden via LoadFromStream in das TMemo nur wenige Millisekunden.

Du wirst jetzt wohl zeilenweise einlesen (ReadLN?) und per Lines.Add einfügen?
Das dauert bei mir dann etwa in Delphi5:
ohne FastMM4 13 Sekunden (wohl kürzere Zeilen), an ein Mitlesen ist nicht zu denken.
mit FastMM4 10 Sekunden.
mit FastMM4 und BeginUpdate/EndUpdate 3 Sekunden (keine Anzeige beim Füllen)

Jetzt die Frage, ob nur zeilenweises füllen des TMemo das Problem ist, also Lines.Add und eine Anzeige wirklich nötig ist?
Mitlesen kann das doch kein Mensch?

Evtl. alle 1000 Zeilen ein EndUpdate/beginUpdate, damit es stoßweise angezeigt wird?

alzaimar 31. Mai 2009 12:10

Re: schnelle Alternative für TMemo
 
Wer will eigentlich alle 100.000 Zeilen sehen? Reichen nicht die ersten paar Zeilen?

Die Muhkuh 31. Mai 2009 12:16

Re: schnelle Alternative für TMemo
 
Oder per Filter verschiedene Ereignisse filtern und nur je nach Filter bestimmte Sachen anzeigen.

Die 100k Zeilen hat eh keiner mehr im Überblick.

yogie 31. Mai 2009 15:50

Re: schnelle Alternative für TMemo
 
erst mal danke für die Tips!

Natürlich kann das kein Mensch mitlesen. Ich habe das Problem
stark vereinfacht. Wie gesaget geht es in Wirklichkeit um eine
Anzeige einer Datenübertragung (RS232 bzw. Ethernet) zu Debug-
zwecken. Dabei trat das Problem auf, dass es bei vielen, schnell
eintreffenden Datensätzen zu Problemen kam, wenn die Debug-Ausgabe
mitlief. Daher habe ich nach Alternativen zu TMemo gesucht.

In der Zwischenzeit habe ich mal RichEdit getestet, das scheint
etwas besser zu sein, aber auch nicht wirklich die Probleme zu beseitigen.

Natürlich kann man filtern, aber eine vollständige Anzeige war im
ersten Anlauf der einfachste Weg, um Fehler zu beobachten.

jaenicke 31. Mai 2009 16:16

Re: schnelle Alternative für TMemo
 
Dafür würde ich eher die VirtualTrees oder so nehmen, womit viel Overhead wegfällt. Damit kann ich in einer Sekunde auch Millionen von Datensätzen einfügen. Und nebenbei kann man später auch Gruppierungen usw. hinzufügen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 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