AGB  ·  Datenschutz  ·  Impressum  







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

schnelle Alternative für TMemo

Ein Thema von yogie · begonnen am 31. Mai 2009 · letzter Beitrag vom 31. Mai 2009
Antwort Antwort
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#1

schnelle Alternative für TMemo

  Alt 31. Mai 2009, 09:09
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
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: schnelle Alternative für TMemo

  Alt 31. Mai 2009, 10:05
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?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: schnelle Alternative für TMemo

  Alt 31. Mai 2009, 13:10
Wer will eigentlich alle 100.000 Zeilen sehen? Reichen nicht die ersten paar Zeilen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: schnelle Alternative für TMemo

  Alt 31. Mai 2009, 13:16
Oder per Filter verschiedene Ereignisse filtern und nur je nach Filter bestimmte Sachen anzeigen.

Die 100k Zeilen hat eh keiner mehr im Überblick.
  Mit Zitat antworten Zitat
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#5

Re: schnelle Alternative für TMemo

  Alt 31. Mai 2009, 16:50
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.
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: schnelle Alternative für TMemo

  Alt 31. Mai 2009, 17:16
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 17:39 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