Thema: Delphi Überlauf TMemo

Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Überlauf TMemo

  Alt 13. Feb 2014, 07:23
Wenn du die Werte direkt in das Memo schreibst und die überflüssigen Zeilen aus dem Memo löschst, dann benutzt du das Memo eben nicht nur zum Anzeigen, sondern auch zum Speichern der Daten.
Ich finde, das ist genau anders herum: Indem ich die Zeilen rausschmeiße, verwende ich das Memo nur als vertikalen Lauftext oder 'TTY', also als Darstellungsparadigma einer Logs. Hmm. Noch noch einmal ein Zwitter, denn außer Darstellung geschieht ja nix. Aber ich weiß, worauf Du hinaus wolltest: '...direkt in das Memo schreibst...'.

Dein Ansatz würde bedeuten, das die Darstellung jeder neuen Zeile immer länger dauert, weil ja jedes Mal *alle* Zeilen erneut dem Memo zugewiesen werden.

Allgemein gesehen würde ich eine TLogFile-Komponente sehr praktisch finden, die alle Logausgaben speichert, aber nur die letzten N (z.B. =2000) zum Darstellen zur Verfügung stellt. Manchmal ist es doch wichtig, im Logfenster zu scrollen, um zu prüfen, was 'eben' (oder neulich) passiert ist.

Diese TLogFile-Komponente würde auch einem etwaigen Darsteller der Logausgaben per Event mitteilen können, das neue Daten zum Darstellen eingetroffen sind. Falls dies zu oft vorkommt (z.B. punktuell mehrere 1000 pro Sekunde), kann man das auch entprellen, d.h. maximal 10 Events pro Sekunde z.B. Wir hatten z.B. so ein Teil im Einsatz, das die Logausgaben mehrerer TCP-Clients verwaltet hat. Manchmal waren 20 TCP-Clients aktiv, mit 10-100 Logausgaben pro Sekunde (hoher Loglevel). Da fror dann die UI ein, weil die Events (wir haben Messages verwendet) den Messagebuffer einfach zugemüllt haben.

Diese Komponente wäre dann ein ViewModel zur Darstellung einer Logausgabe, und man könnte sowohl Jänicke als auch Bummi zufriedenstellen (oder mich mit meinem DevExpress-TcxGrid-Overkill).

Geändert von Furtbichler (13. Feb 2014 um 07:26 Uhr)
  Mit Zitat antworten Zitat