Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TreeView Verzeichnis und Dateninhalte ausgeben? (https://www.delphipraxis.net/184088-treeview-verzeichnis-und-dateninhalte-ausgeben.html)

Nugi89 24. Feb 2015 16:43

TreeView Verzeichnis und Dateninhalte ausgeben?
 
Da ich ja bereits in einer TreeView eine Struktur erstellt habe und diese mir auch angezeigt wird, möchte ich jetzt mir im Verzeichnis alle Unterpunkte ausgeben lassen weis aber nicht wie. Ich kann bisher nur ein bestimmten Pfad angeben und diesen benutzen. Ja hier nun meine Fragen: wie kann ich mir das komplette Verzeichnis ausgeben lassen und die Unterpunkte in ListView bzw ImageView anzeigen lassen? Und wie kann ich die ausgewählten Dateien im Verzeichnis öffnen?

Ich hab absolut keinen Plan wie ich es angehen soll, vielleicht kann mir ja irgend jemand helfen.
Hab noch nicht so das Profiwissen was Programmieren angeht.

Danke schonmal im Vorraus.

Aviator 24. Feb 2015 17:01

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Um einfach mal ein paar Stichworte in den Raum zu werfen:

Delphi-Referenz durchsuchenFindFirst, Delphi-Referenz durchsuchenFindNext, Delphi-Referenz durchsuchenShellExecute

Ich hoffe, dass hilft dir fürs Erste schon mal weiter.

alda 25. Feb 2015 09:00

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Oh Gott, bitte kein FindFirst / FindNext benutzen. Schau Dir mal das Spring4D Framework an (https://bitbucket.org/sglienke/spring4d) und verwende für die Dateisuche einfach Spring.Utils.IO.EnumerateFiles - das ist am einfachsten.

Edit:
Gerade auch "Hab noch nicht so das Profiwissen was Programmieren angeht." gelesen - Ich bleib trotzdem dabei: Spring4D Framework solltest Du Dir anschauen (abhängig von Deiner DelphiVersion) - solltest Du fragen dazu haben, helfen wir natürlich gerne weiter.

Sir Rufo 25. Feb 2015 11:44

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
@alda

So eine Kapselung ist ja schön, aber das liest sich so, als ob
Delphi-Quellcode:
FindFirst
,
Delphi-Quellcode:
FindNext
zu benutzen absoluter Schwachsinn wäre.
https://bitbucket.org/sglienke/sprin....pas?at=master (s. Zeile 1722ff) ;)

Bjoerk 25. Feb 2015 12:53

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Gegen FindFirst FindNext gibst eigentlich nichts zu sagen. Das Problem ist oft ein anderes und zwar daß man meistens das ganzes Laufwerk in ein TreeView einliest. Da ist ein Thread sicher besser. Such mal ggf. nach DeddyH's Filesearcher.

Sir Rufo 25. Feb 2015 13:03

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von Perlsau (Beitrag 1291450)
Zitat:

Zitat von Sir Rufo (Beitrag 1291437)
@alda
So eine Kapselung ist ja schön, aber das liest sich so, als ob
Delphi-Quellcode:
FindFirst
,
Delphi-Quellcode:
FindNext
zu benutzen absoluter Schwachsinn wäre.
https://bitbucket.org/sglienke/sprin....pas?at=master (s. Zeile 1722ff) ;)

Offenbar kocht Spring4D auch nur mit Wasser resp. verwendet FindFirst und FindNext :lol:

Na klar, weil das die offizielle Schnittstelle ist um darauf zuzugreifen. So ein Wrapper um diese Funktionen ist natürlich sehr geschmeidig, weil die Benutzung einfacher wird und (mit der wichtigste Aspekt) sollte sich das irgendwann aus welchen triftigen oder nichtigen Gründen einmal ändern, dann baut man diesen Wrapper um und schwups läuft alles wieder wie geschmiert ohne die Anwendungen auch nur anfassen zu müssen. ;)

Daniel 25. Feb 2015 13:11

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Welches Delphi wird denn verwendet?
Wenn die Unit "System.IOUtils.pas" bereits existiert, kann man sich dort auch an "TDirectory.GetFiles()" bedienen. Das scannt - auf Wunsch auch rekursiv - einen Verzeichnisbaum oder auch ein ganzes Laufwerk.

Davon aber mal abgesehen wäre es vielleicht besser, lediglich die aktuell benötigte Ebene einzulesen und dann immer auf Anforderung die weitern Ebene zu laden. Spart Zeit und nerven. Kennt noch jemand den Quicktime-Installer aus der Win95-Ära? Der suchte auch stets auf dem ganzen Datenträger nach seinen Verwandten.

Neutral General 25. Feb 2015 13:31

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Sich aber nur für ein bisschen FindFirst und FindNext das komplette Spring4D Framework zu installieren ist auch overkill.

alda 25. Feb 2015 13:35

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von Neutral General (Beitrag 1291462)
Sich aber nur für ein bisschen FindFirst und FindNext das komplette Spring4D Framework zu installieren ist auch overkill.

Irgendwie glaube ich, dass Du Spring noch nie verwendet hast ;-)

Worauf ich insgesamt hinaus will:
Wir haben in Delphi wirklich nicht viele Frameworks (im Vergleich zu anderen Sprachen). Aber die, die wir haben, sollte man den Leuten mal näher bringen. Denn sonst werden alle Delphianer (welche die Frameworks nicht kennen) die nächsten 20 Jahre weiter so arbeiten wie die letzten 20 Jahre ... in dem jeder für sich sein eigenes Süppchen kocht und wieder und wieder Filesearcher, Listen, Serialisierungen etc. pp implementiert.
Wenn ich also ein Projekt starte, dann gehören für mich als Profi die richtigen Werkzeuge dazu. Und neben einer funktionierenden IDE (gut, die haben wir nicht :>), sollten dazu auch ein paar Frameworks gehören, die verschiedene Basisfunktionalitäten bereitstellen.

Auch wenn es die Fragestellung des TE's nicht direkt betrifft, erwähne ich einfach mal ein paar:
- Spring4D: generische und interface-basierte Listen, bessere Events (Multicast), diverse Helper in den Bereichen Rtti, Listen, I/O und anderen Bereichen (Nullables, Maybes, Options, WeakReferences etc), DI Container, krypto Helper
- DSharp: AOP, Mocks (zum testen) und mehr
- Delphi-Mocks: auch ein Mocking-Framework (alternative zu DSharp)
- DUnitX: ein gescheites Testframeowrk
- TestInsight: eine gescheite Testrunner GUI (sowohl für Dunit als auch DUnitX)
- VirtualTreeView: mächtige, flexible und performante GUI Komponente für Baum- und Tabellendarstellungen.

Wer diese Basis verwendet und kennt, der hat sich das Leben m.E. um einiges erleichtert.

Daniel 25. Feb 2015 14:21

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Es gibt zum Thema Spring4D bestimmt viele Fragen. Macht dafür gern ein eigenes Thema auf - aber fetzt Euch deswegen nicht hier in diesem Thema.

Nugi89 25. Feb 2015 15:41

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
soweit hat es mir geholfen nur im shellexecute steht nix drin. d.h. die seite ist leer.
hab jetzt alles umgebaut und eine shelltreeview und eine shelllistview benutzt. soweit wird jetzt alles angezeigt nur tja nur kann ich die dateien nicht öffnen die mir in der shelllistview angezeigt werden. würde sie gerne in einer doppelklick methode öffnen nur fällt mir keine funktion ein die auch funktioniert. oder gibt es da was im objektinspektor was mir erlaubt dateien zu öffnen?

hoffe es kann jemand helfen?

DeddyH 25. Feb 2015 15:45

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Im ShellExecute steht nichts drin? Wie ist das zu verstehen? :gruebel:

Nugi89 25. Feb 2015 15:46

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
es wird mir nur eine leere seite geöffnet

DeddyH 25. Feb 2015 15:48

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Was willst Du denn machen? Der ganze Thread dreht sich um die Ermittlung von Dateien und Verzeichnissen, und Du redest plötzlich von "leerer Seite". Geh doch mal in Gedanken ein paar Schrittte zurück, damit wir Dir auch folgen können ;)

Neutral General 25. Feb 2015 15:49

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von DeddyH (Beitrag 1291511)
Was willst Du denn machen? Der ganze Thread dreht sich um die Ermittlung von Dateien und Verzeichnissen, und Du redest plötzlich von "leerer Seite". Geh doch mal in Gedanken ein paar Schrittte zurück, damit wir Dir auch folgen können ;)

Ich schätze mal die OH für Shellexecute ist nicht besonders ausführlich.

Nugi89 25. Feb 2015 15:57

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
also ich möchte einfach nur die dateien mit einem doppelklick öffnen die mir in einer shelllistview anzeigt werden. wie in einem normalen browser.
sorry das ich es undeutlich formuliert hatte:cry:

DeddyH 25. Feb 2015 15:58

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Dann zeig doch mal, wie Du das versuchst.

alda 25. Feb 2015 16:18

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1291437)
@alda

So eine Kapselung ist ja schön, aber das liest sich so, als ob
Delphi-Quellcode:
FindFirst
,
Delphi-Quellcode:
FindNext
zu benutzen absoluter Schwachsinn wäre.
https://bitbucket.org/sglienke/sprin....pas?at=master (s. Zeile 1722ff) ;)

Da Daniel meinen Post gelöscht hat, hier nochmal:
Schwachsinn hinsichtlich der Tatsache, das es funktionierende und sehr komfortable Kapselungen da draußen gibt die man verwenden kann. Man implementiert ja auch nicht selbst eine generische Liste, wenn man Generics zur Verfügung hat.

Zitat:

Zitat von Nugi89 (Beitrag 1291515)
also ich möchte einfach nur die dateien mit einem doppelklick öffnen die mir in einer shelllistview anzeigt werden. wie in einem normalen browser.
sorry das ich es undeutlich formuliert hatte:cry:

Da kann ich jetzt grad auch nicht folgen, ein wenig Code wäre klasse ;-)

p80286 25. Feb 2015 16:38

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Nun ich denke, er versucht den Explorer nachzubauen, Doppelklick auf ein PDF-File, der Reader geht auf, Doppelklick auf ein TXT-File Notepad öffnet sich usw.

Gruß
K-H

Perlsau 25. Feb 2015 16:52

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von Nugi89 (Beitrag 1291515)
also ich möchte einfach nur die dateien mit einem doppelklick öffnen die mir in einer shelllistview anzeigt werden. wie in einem normalen browser.
sorry das ich es undeutlich formuliert hatte:cry:

Das mußt du natürlich selbst programmieren. Wenn du ShellExecute eine Datei übergibst, deren Dateityp Windows bekannt ist und für den es eine Standard-Anwendung gibt, wird diese gestartet und die Datei geladen, ausgeführt etc. Die Online-Hilfe ist dein Freund.

Nugi89 25. Feb 2015 16:53

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
genau p80286 hat es erfasst:-D so möchte ich es haben:wink:

p80286 25. Feb 2015 16:53

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von Bjoerk (Beitrag 1291455)
Gegen FindFirst FindNext gibst eigentlich nichts zu sagen. Das Problem ist oft ein anderes und zwar daß man meistens das ganzes Laufwerk in ein TreeView einliest. Da ist ein Thread sicher besser. Such mal ggf. nach DeddyH's Filesearcher.

Hab ich gerade versucht, Leider sagt Torry's "Error 404 File is missing"
http://www.torry.net/vcl/filedrv/search/FileSearch.zip

Gibt's da noch andere Quellen?

Gruß
K-H

DeddyH 25. Feb 2015 16:58

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Ich musste das Ding umbenennen (vielleicht bin ich auch nur zu blöd für Torry), als ich eine neue Version hochladen wollte. Die korrekte URL lautet: http://www.torry.net/vcl/filedrv/sea...Searchv1.1.zip

Aviator 25. Feb 2015 21:39

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von Nugi89 (Beitrag 1291508)
... nur im shellexecute steht nix drin. d.h. die seite ist leer. ... hoffe es kann jemand helfen?

Die OH von Delphi gibt zu ShellExecute nichts aus, da es eine Windows API Funktion ist. Du musst bei der Suche links auf MSDN-Katalog klicken. Dann bekommst du auch Suchergebnisse angezeigt.

Alternativ hier einmal die direkt Links zu ShellExecute und ShellExecuteEx im MSDN.

Die von Alda genannte VirtualTreeView Komponente in Post #9 ist für solche Dinge natürlich ebenfalls super gut. Allerdings benötigt man dort ein paar Tage Einarbeitungszeit bis man wirklich richtig mit der Komponente arbeiten kann. Die Komponente selbst wird allerdings nicht mehr von Mike Lischke weiterentwickelt, sondern von Jam-Software.

p80286 26. Feb 2015 21:57

AW: TreeView Verzeichnis und Dateninhalte ausgeben?
 
Zitat:

Zitat von DeddyH (Beitrag 1291525)
Ich musste das Ding umbenennen (vielleicht bin ich auch nur zu blöd für Torry), als ich eine neue Version hochladen wollte. Die korrekte URL lautet: http://www.torry.net/vcl/filedrv/sea...Searchv1.1.zip

Danke!

K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 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