AGB  ·  Datenschutz  ·  Impressum  







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

TreeView mit 200.000 Einträge und nachladen

Offene Frage von "jaikai"
Ein Thema von jaikai · begonnen am 11. Nov 2005 · letzter Beitrag vom 25. Jan 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 06:24
Moment mal bitte, ich würde doch erst einmal darüber nachdenken, wer 200.000 (in Worten: zweihundertausend) Einträge mehr oder weniger lesen möchte -> ich nicht! Also ist es wahrschenlich besser, sich Gedanken über die Einteilung der Einträge in bestimmte Kategorien zu machen und das ganze Problem so lange zu unterteilen, bis eine lesbare Verteilung entsteht, oder !
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 06:30
Deswegen wird es mit dem Nachladen von Zweigen nicht schneller, auch wenn Sie nur noch 5000 Einträge haben. Und 5000 Einträge sind nicht unrealistisch.

Mit der TreeView-Variante werden alle 5000 Einträge geladen. Mit der virtuellen Variante nur die sichtbaren 50. (Je nachdem, wir groß das Control ist).
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 06:33
Ich möchte auch keine 5000 Einträge lesen (maximal 50)!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 06:40
Praktisches Beispiel:

Leistungsverzeichnis mit mehreren Titeln (Knoten). Die untersten Titelebenen enthalten jeweils rund 2000 Positionen.

Die wird man sicher durchlesen und mit Preisen verpassen müssen, auch wenn man nicht will.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 07:01
Zitat von sh17:
Praktisches Beispiel:

Leistungsverzeichnis mit mehreren Titeln (Knoten). Die untersten Titelebenen enthalten jeweils rund 2000 Positionen.

Die wird man sicher durchlesen und mit Preisen verpassen müssen, auch wenn man nicht will.
NEIN, dann möchte ich das Ganze nach Anfangsbuchstaben etc. selektieren können, niemand liest mehr als 50 Einträge konzentriert durch!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 07:47
Die schnellste Möglichkeit, den Baum dynamisch nachzuladen ist die, die Datei korrekt zu sortieren, sodaß Du relativ fix die nachzuladenden Knoten ermitteln kannst. Du kannst versuchen, die Bauminformation in einer einfach TStringlist zu laden. Das ist relativ fix.

Wenn Du nun einen Knoten expandieren willst, dann suchst Du das erste 'Kind' der neuen Unterebene. Ab da liest Du aus der Stringliste einfach alle Elemente dieser Ebene ein. Eine Stringliste mit 200.000 Elementen durchzulaufen geht innerhalb von ein paar ms, also kein Problem. Wichtig ist, das Du anhand eines Schlüssel erkennst, welche Knoten zusammengehören, und das sehe ich bei deinem Verfahren nicht. Für die Root-Ebene ist das einfach '00', aber für die Kinder des 3.Rootknotens ist das nicht gegeben. Deshalb wäre es ratsam, Jedem Knoten eine ID zu geben, und zwar so (rekursiv definiert):
Delphi-Quellcode:
Function ID (Knoten)
  If Knoten = Nil Then
    Result := ''
  Else
    Result := ID (Knoten.Parent)+'/'+Knoten.Index
Nach dieser ID sortierst Du die Stringliste.

Um nun alle Kinder eines Knotens mit einer bestimmten ID 1/2/3 zu laden, suchst Du einfach den Eintrag 1/2/3/0. Das ist das erste Kind. Ab da gehst Du sequentiell in der Stringliste weiter (die ist ja nach der ID sortiert), bis die einzulesende ID nicht mehr dem Muster 1/2/3/* entspricht.

Das sollte ohne Verzögerungen gehen. Ich teste das gleich mal und poste dann hier (wenn ich mich nicht zum Horst mache), eine Demo.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#17

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 08:22
ich glaube nicht das das windows control treeview soviele einträge verkraftet oder performat darstellen kann.

ich empfehle dir auf dem virtualstringtree umzusteigen.
diesen gibt es hier: http://www.lischke-online.de/
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#18

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 09:18
--> ich glaube nicht das das windows control treeview soviele einträge verkraftet oder performat darstellen kann.

Aber klar doch verkraftet die TV soviele Einträge! Ich habs doch schon durchprobiert. Nur die Ladezeiten stören mic wirklich.

--> Kroko...

Liest Du dir ein ganzes Lexikon durch um den Begriff "Dumm" zu finden oder schaust du unter "D" nach? Und wenn Du noch wissen willst, woher das Wort kommt, so - stöbern und begreifen - lieste Dir dann noch was ethnomythologisches durch? Bischen dümmlich, Deine Maxime...

---> generic
Ich hab nur ne offizielle D5, und keine alte VirtuTV Version. Theme wird nicht unterstützt und ich kaufe mir für 200.000 Eiträge nicht ne neue Version. Die alte ist mühsamer, aber für das was ich will, reicht sie in allen Bereichen. Ist nur Bei - nicht Hauptwerk.

---> alzaimar

Erstma Danke, und ich hoffe, Horst hat Ruhe.
Das Indizieren der Zugehörigkeit ist nicht so wild, das ist bloß Schreibarbeit. Die Daten liegen vor und ich kann sie verbiegen, wie ich will.

Danke
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 09:32
Zitat von generic:
ich glaube nicht das das windows control treeview
Doch doch, das klappt. Das "Problem" ist die Datenstruktur, damit man schnell alle Kind-Einträge eines Unterknotens findet. Das gleiche Problem tritt bei der VST von Lischke auf.

Derzeit habe ich eine Verzögerung von 200-300ms (PM 1.5Ghz) bei jedem Klick, wenn der Knoten noch nicht befüllt wurde), bei 200.000 Einträgen. Das ist schon ganz ordendlich. Man kann es auf fast 0ms Verzögerung reduzieren, wenn man die Baum-Information geeignet ablegt. Dann geht das Suchen sehr schnell.

Die Bottlenecks lassen sich auf zwei Routinen reduzieren:
1. Ist ein Texteintrag ein Kindknoten eines vorgegeben Knotens?
2. Existieren für einen Knoten überhaupt Kinder?

Wenn die Bauminformation so gespeichert wird, das der Index des Vaters für jeden Knoten mit abgespeichert wird, dann kann man (1) vernachlässigen.
Wenn die Anzahl der Kinder auch gespeichert wird, dann wird auch (2) vernachlässigbar.

Beide Optimierungsmöglichkeiten sind in dieser Demo nicht berücksichtigt. Man könnte es aber ohne Weiteres einbauen. Ich würde die Baumdaten auch nicht als Text, sondern als geeignete Struktur ablegen (in einem Stream, z.B.) dann geht das Laden und Suchen sehr schnell, eigentlich ohne Verzögerung.
Angehängte Dateien
Dateityp: zip virtualtree32_674.zip (238,3 KB, 9x aufgerufen)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: TreeView mit 200.000 Einträge und nachladen

  Alt 25. Jan 2006, 09:41
Zitat von jaikai:
...
--> Kroko...

Liest Du dir ein ganzes Lexikon durch um den Begriff "Dumm" zu finden oder schaust du unter "D" nach? Und wenn Du noch wissen willst, woher das Wort kommt, so - stöbern und begreifen - lieste Dir dann noch was ethnomythologisches durch? Bischen dümmlich, Deine Maxime...
...
nein, eben nicht, deswegen stand dort etc., aber ich suche nicht D und gehe alle Worte bis DUMM durch, sondern
D ->
DU ->
DUM ->
DUMM gefunden.

Meine Maxime mag eigen sein, bestimmt nicht dümmlich (PS: Toller Tonfall über andere Meinungen), aber glaubst Du wirklich jemand liest sich bei voller Konzentration 2000 Einträge durch? NIE MALS, überprüfe Dich doch mal selbst! Die Strategie "TEILE und HERRSCHE" entstand nicht einfach so, sondern .. naja.
@jaikai
Trotzdem finde ich Deinen Tonfall nicht gut, aber wenn Du es so haben möchtest, erstelle Dein Programm mit soviel Einträgen, wie Du willst, auf meine Hilfe zähle nicht mehr!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 20:42 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