AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign VirtualStringTree - Klassendesign allgemeine Frage - Daten wo laden
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree - Klassendesign allgemeine Frage - Daten wo laden

Ein Thema von günni0 · begonnen am 15. Apr 2018 · letzter Beitrag vom 15. Apr 2018
Antwort Antwort
günni0
(Gast)

n/a Beiträge
 
#1

AW: VirtualStringTree - Klassendesign allgemeine Frage - Daten wo laden

  Alt 15. Apr 2018, 10:52
Zitat:
Wenn du die Pfadangaben häufiger im Programm in expandierter Form brauchst, würde ich sie gleich beim laden erweitern und sie vorrätig halten.
Genau so ist es. Das aufbereiten dieser Pfade ist schon etwas komplexer. Gute Idee, dann bereite ich sie direkt auf und halte sie vorrätig.
Die paar KB zusätzlich schaden ja nicht, denn dann halte ich mir auch gleich die Rohversion des Pfades vorrätig.

Zitat:
Am besten einfach mal ausprobieren und schauen, wie es sich hinsichtlich Performance/Speicherverbrauch ergibt.
Zum Speicherverbrauch kann ich sagen. Bei meinen Tests erstelle ich gerade 70 dieser relativ großen Instanzen.
Alle Instanzen zusammen verbrauchen nicht einmal 1 MB laut TaskManager. Das gesamte Programm verbraucht 19 MB.
Das wird aber vermutlich noch etwas weniger.

Geändert von günni0 (15. Apr 2018 um 11:03 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: VirtualStringTree - Klassendesign allgemeine Frage - Daten wo laden

  Alt 15. Apr 2018, 13:59
Die Events des VST sind nur zur Anzeige gedacht. GetText dient nur dazu den anzuzeigenden String an den VST zu übergeben. Alle Paint Events dienen dazu dem Tree an einer bestimmten Stelle eine andere Farbe zu verpassen - basierend auf den Daten der jeweiligen Node oder eines bestimmten Zustandes.

Bei kleineren Datenmengen könnten man vielleicht noch sagen, dass man so etwas machen kann. Aber bei GetText wirst du sehr wahrscheinlich ganz schnell feststellen, dass das der falsche Weg ist. GetText wird immer wieder aufgerufen wenn du nur die kleinste Kleinigkeit mit dem VST machst.


Also gilt: Die Daten werden unabhängig von der anzuzeigenden Komponente geladen. Beispielsweise in einem Thread oder wegen mir noch ein einem OnShow oder OnCreate Event der Form. Aber das in einem Event zu machen das ständig und immer wieder ausgelöst wird, halte ich für sehr fragwürdig.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: VirtualStringTree - Klassendesign allgemeine Frage - Daten wo laden

  Alt 15. Apr 2018, 14:02
Zitat:
Also gilt: Die Daten werden unabhängig von der anzuzeigenden Komponente geladen. Beispielsweise in einem Thread oder wegen mir noch ein einem OnShow oder OnCreate Event der Form. Aber das in einem Event zu machen das ständig und immer wieder ausgelöst wird, halte ich für sehr fragwürdig.
Ich habe jetzt alles so, dass ich, wie im anderen Beitrag schon geschrieben, initial beim Programmstart alles lade, alle Instanzen erstelle und das VST nur noch anzeigt.
Es gibt genau eine Spalte wo ich ein Datum anzeige. Da die Uhrzeit, wenn sie 00:00:00 ist, aber nicht angezeigt wird, füge ich sie dort manuell als String s := '00:00:00' zu CellText hinzu. Das ist ja nur eine Mini-Kleinigkeit.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: VirtualStringTree - Klassendesign allgemeine Frage - Daten wo laden

  Alt 15. Apr 2018, 14:06
Das ist auch ok so. Und das ist auch fast ein Paradebeispiel für eine Trennung zwischen Daten und Anzeige. In den Daten steht als Beispiel 30.12.1899 (also Datum 0) drin. Als Anzeige möchtest du aber "Kein Datum festgelegt" haben. Das ist dann etwas was du natürlich im GetText Event erledigst. Weil das ist etwas, was theoretisch auch pro Anzeige abweichen kann.

Beispielsweise könnte es ja auch noch eine Komponente geben die den Raw Content der Instanz anzeigen soll. Dort würde dann 30.12.1899 angezeigt werden.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#5

AW: VirtualStringTree - Klassendesign allgemeine Frage - Daten wo laden

  Alt 15. Apr 2018, 14:09
Wo du Raw-Content ansprichst...

Es gibt ein paar Pfade die ich bei Programmstart sowie Instanzenerstellung aufbereite.
Die aufbereiteten Pfade werden im GetText-Event angezeigt.
Ich halte mir aber auch noch die nicht aufbereiteten Pfade im Rohformat vor, die ich an anderen Stellen verwenden kann, wo ich sie zwingend un-aufbereitet benötige.

Ich habe mal zum Spaß das Aufbereiten der Pfade ins GetText gepackt und was soll ich sagen, die Performanz war unterirdisch (war ja zu erwarten).
Daten wie ein Datum halte ich auch im Rohformat vor (Int64-Variable) und rufe im GetText dann CellText := DateTimeToStr(UnixToDateTime(<datum int64>));
  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 08:04 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