Autor Beitrag
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 11.06.02 22:18 
Hallo an alle!

Da hier ja noch nichts los ist, werde ich mal anfangen und eine Frage stellen. Ich programmiere gerade einen Verzeichnisbaum, da ich leider keine deutsche Freewarekomponente gefunden habe. Leider ist dieser Baum sehr langsam, obwohl ich die Api-Funktion FindFirstFile benutze. Deshalb würde ich gerne wissen, wie das schneller geht. Dazu kommt, dass ich die Symbole von speziellen Ordnern wie z.B der Papierkorp bekommen möchte. Ich denke, dafür gibt es sicherlich eine extra Funktion, habe diese leider aber noch nicht gefunden. Also, es wäre nett wenn ihr mir gute Komponenten dafür nennt (Verzeichnisbaum und Dateiliste, auf deutsch) oder noch besser ihr mir eine passende Api-Funktion nennt.

Ich danke für eure Hilfe,
wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 11.06.02 23:13 
Wow,
alles so Bunt hier *augenwisch* :shock:

Aber zu deiner Frage:

Wieviel der Zeit geht denn Wiklich beim suchen der Dateien verloren und wieviel beim eintragen in den Baum?
1. Benutzt du BeginUpdate/EndUpdate beim Baum füllen?
2. Hast du dir schon mal VirtualTreeView angeschaut? Der ist erheblich schneller als der "standart Tree"

Ich habe vor kurzen mal unter Kylix ein Verzeichnisgrößenermittelprogramm geschrieben. Dieses Zeigt auch den VErzeichnisbaum an. Um schon einen groben überblich zu bekommen bevor dieser komplett eingelesen ist habe ich erst alle Dateien und Verzeichnisse im aktuellen Verzeichnis angezeigt und erst danach habe ich den Nächsten rekursionsschrit gemacht (also nciht schon beim finden des Verzeichnisses). Vieleicht hilft diese Taktik auch bei deinem Problem.

Wenn ich so richtig drüber nachdenke währe bei dir eine Rekursion bei bedarf sowiso geeigneter. Du leiset die aktuelle Verzeichnisebene ein und stellst sie dar. Wenn nur ein Knoten aufgeklappt wird liest du die nächste ebene ein.
Vorteil: Keine lange startzeit.
Nachteil: Du must unterstellen, das jedes Verzeichnis auch Kindverzeichnisse hat (ein Plus Symbol davor einblenden).

Den nachteil kannst du vieleicht umgehen wenn du eine Ebene (und eben nur eine) im voraus liest.

So, das war jetzt mitsicherheit nicht die Universallösung aber ich hoffe du kannst den einen oder anderen Denkanstoß entnehmen ;).

Machst gut
Klabautermann
CB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 23



BeitragVerfasst: Mi 12.06.02 10:33 
Der Windows Explorer scheint die Methode mit dem Einlesen von nur einer bzw. maximal zwei (das voraus Lesen) Ebenen auch zu benutzen.
Wenn du das mit dem voraus Lesen implementierst, dann solltest du natürlich nicht das komplette weitere Verzeichnis einlesen. Es muss ja nur mindestens eine weitere Datei oder ein weiteres Verzeichnis vorhanden sein.

Warum benutzt du eigentlich nicht die TShellTreeView Komponente, die bei Delphi 6 dabei? Die benutzt genau die gleiche Darstellung, wie im Explorer (also mit den Sondersymbolen für Papierkorb, etc.).

_________________
mfg\CB
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 12.06.02 10:36 
Und in der Personal Edtion von Delphi 6 sind sogar die Sourcen dabei... auch von der tShellTreeView!
wulfskin Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mi 12.06.02 14:32 
Hallo!

Erstmal danke für Eure Hilfe. Bringt mir aber soweit nichts, da ich auch nur das Verzeichnis einlese, dass gerade bneötigt wird. Die VirtualTreeView wollte ich schon länger mal installieren, bekomme aber leider immer Fehler :-(. Naja, ich werd's bei Gelegenheit nochmal versuchen und dann mich hier nochmal melden!

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: Mi 12.06.02 15:09 
Titel: VirtualTreeView
Zu dem VirtualTreeview kann ich nur eins sagen: Ich hab mir mal vor längere Zeit diese Komonete gezogen, lief auch absolut ohne Probleme, diese zu installieren. Dann kam ein komplett überarbeitete Version raus, und die habe ich bis heute noch nicht zu Laufen bekommen (Delphi 6 Ent).
Ich kann dir ja mal die etwas ältere Version schicken. 8)

Bis dann
user defined image

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: Di 18.06.02 20:56 
bei allen Delphi-Versionen liegen doch Beispiele sowie zumindest eine Komponente bei. SChau dir die doch mal an

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
FriFra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 557

Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
BeitragVerfasst: Mo 24.06.02 12:28 
Titel: Das geht auch mit dem "normalen Treeview"
Ich hab das auch schonmal gelöst. Im Prinzip solltest Du Verzeichnisse jeweils nur eine ebene tiefer ermitteln. Wenn Du erst OnExpand jeweils eine ebene weiter liest, wird das ganze genauso schnell wie der Explorer.
wulfskin Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mo 24.06.02 12:45 
Titel: VirtualTreeView
Ich habe jetzt von Arakis die VirtualTreeView bekommen. Mit dieser klappt es wirklich schnell. Es lag anscheinden nur an der Geschwindigkeit der TreeView, den ich lese nicht nur Verzeichnisse, sondern auch Dateien aus!

Danke für die Hilfe,
wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Rool
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 211



BeitragVerfasst: Fr 31.01.03 16:06 
Titel: Thememanager
Wenn ich den VirtualTreeview installieren will, fehlt mir der ThemeManager6. Wi bekomme ich den? Hab schon gegoogelt aber ohne erfolg!

_________________
MFG Rool
Rool
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 211



BeitragVerfasst: Fr 31.01.03 16:08 
Titel: Anders...
AN Arakis:
Könntest du mir die alte Version vielleicht auch schicken? Wär super nett!
meine adresse: rol@jacrol.de

_________________
MFG Rool