Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Alle Ordner auflisten (https://www.delphipraxis.net/167583-alle-ordner-auflisten.html)

SyntaxXx 7. Apr 2012 14:19

Alle Ordner auflisten
 
Hallo zusammen,
ich habe ein kleines Problem.
Und zwar möchte ich mir in meinem Programm alle Ordner + Unterordner anzeigen lassen.
Doch leider komme ich jetzt nicht weiter.

Ich habe das hier schon gefunden, doch das will nicht so wirklich. http://www.delphipraxis.net/2235-ver...rchsuchen.html

Daher habe ich mich ran gesetzt und das ganze Schritt für Schritt gemacht und bin im Endeffeckt Quasi bei der Lösung, wie sie auch oben steht xD.
Naja jetzt ahbe ich die Procedur zumindest verstanden xD.

Nur eine Sache verstehe ich nicht.
Woher weiß oben die Procedur, wann es keine Unterodner mehr gibt.
Denn genau das ist das Problem was ich habe.

Klar, ich könnte eine Schleife einbauen, die das Ganze so oft wiederholt, wie ich möchte.
Nur das Problem ist, dass ich ja nicht weiß, wie viele Unterordner es gibt.

Ich hatte schon den Ansatz:
Delphi-Quellcode:
var SR : TSearchRec;
Delphi-Quellcode:
repeat
//Hier kommt das ganze Ordnerauslesen
until SR.Name = '';
Nur leider funktioniert das nicht, da SR.Name leider kein '' zurück gibt xD

Nun also meine Frage, wie kann ich es schaffen, dass die Schleife stoppt, wenn es keinen Unterordner mehr gibt?

Danke schonmal.

himitsu 7. Apr 2012 14:28

AW: Alle Ordner auflisten
 
FindFirst und FindNext hast du aber auch mit eingebaut?

SyntaxXx 7. Apr 2012 14:32

AW: Alle Ordner auflisten
 
Ja habe ich.
Ich habe mir unter eben angegebenem Link das Beispiel nochmal angeschaut und denke ich habe das Problem gefunden.
Ich werde das jetzt ausprobieren und euch dann bessheid geben.

Dennoch vielen Dank schonmal

Uwe Raabe 7. Apr 2012 17:47

AW: Alle Ordner auflisten
 
Da gibt's doch auch was Eingebautes:

Delphi-Quellcode:
uses
  Types, IOUtils;

var
  dirs: TStringDynArray;

begin
  dirs := TDirectory.GetDirectories('C:\', '*', soAllDirectories);
  ...
end;

Popov 7. Apr 2012 18:12

AW: Alle Ordner auflisten
 
Zitat:

Zitat von SyntaxXx (Beitrag 1160600)
Nur eine Sache verstehe ich nicht.
Woher weiß oben die Procedur, wann es keine Unterodner mehr gibt.
Denn genau das ist das Problem was ich habe.

Bezogen auf das von dir genannte Beispiel sieht es so aus, dass die Prozedur aus zwei Suchfunktionen besteht. Die eine sucht nach Dateien und schließt Ordner aus, die andere sucht nach Ordnern und ignoriert die Dateien. Findet die zweite Suchfunktion einen Ordner, ruft sie sich selbst mit dem Ordner wieder auf. Es wird fortgesetzt und ein Stapel aufgebaut bis irgendwann kein Ordner mehr da ist, so das der Stapel wieder komplett abgebaut wird.

Das ist jetzt keine Kritik an dem Beispiel, aber es gibt Funktionen die geradliniger aufgebaut sind und deshalb leichter verständlich sind. Such dir vielleicht eine Funktion die das gleiche erledigt und einfacher zu verstehen ist.


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