Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle Dateien eines Ordners anzeigen (auch unterordner) (https://www.delphipraxis.net/19186-alle-dateien-eines-ordners-anzeigen-auch-unterordner.html)

Hazardos 30. Mär 2004 17:35


Alle Dateien eines Ordners anzeigen (auch unterordner)
 
Hallo, ich habe mal wieder ne Frage.

Das zu programmierenden Programm soll wie folgt aussehen:
Man wählt einen Ordner und es werden alle Dateien eines bestimmten Typs (Bspw. *.ppt) angezeigt, es werden auch die Unterordner, unabhängig von der Pfadtiefe und Anzahl, nach diesem Dateityp durchsucht. In einer Liste erscheint dann der Dateiname der gefundenen Datei, sowie der Pfad abzüglich dem gewählten Ordner.
Es soll dann in etwa so aussehen:

gewählter Ordner:
- C:\Neu
gefundene Dateien:
- C:\Neu\Beispiel.ppt
- C:\Neu\Beispiel\Beispiel_verändert.ppt
- C:\Neu\Beispiel\original\Beispiel.ppt

In der Liste werden die gefundenen Dateien wie folgt angezeigt:
- Beispiel.ppt
- Beispiel\Beispiel_verändert.ppt
- Beispiel\original\Beispiel.ppt

Würde mich echt über helfende Antworten freuen!!
Es geht mir hauptsächlich um die Suchroutine...
MfG Jörn

sakura 30. Mär 2004 17:37

Re: Alle Dateien eines Ordners anzeigen (auch unterordner)
 
Da hilft Dir die Suche: Hier im Forum suchenFindFirst FindNext bzw. die Code-Lib: FindFirst FindNextFindFirst FindNext

...:cat:...

himitsu 30. Mär 2004 17:51

Re: Alle Dateien eines Ordners anzeigen (auch unterordner)
 
Einfach 'ne Procedur erstellen, der du das Verzeichnis und die Endung übergibst.

Und innerhalb dieser eine Abfrage machen und wenn Unterverzeichnisse vorhanden sind, dann die Prozedur sich selber mit Verzeichnis+'\'+Unterverzeichnisname und Endung aufrufen lassen.


Beispiel:
Code:
procedure Suche(V, E: String);
begin
  if (letztes Zeichen in V) <> '\' then V := V + '\'
  DateienSuchen(V + '*' + E)
    repeat
      {Dateiname der Liste hinzufügen}
    until (nächsteDateiSuchen)
  DateienSuchen(V + '*.*')
    repeat
      if (gefundenes = Verzeichnis) then
        Suche(V + Verzeichnisname + '\', E);
    until (nächsteDateiSuchen)
end


Suche('C:\Verz\', '.ppt');

Hazardos 30. Mär 2004 18:25

Re: Alle Dateien eines Ordners anzeigen (auch unterordner)
 
Genau das ist das, was ich brauche.. danke schonmal soweit...
Ich hake nur noch bei einer Sache, das wäre : Wie erkenne ich ein gefundenes Verzeichnis als Suchergebnis?

DelphiDeveloper 30. Mär 2004 18:31

Re: Alle Dateien eines Ordners anzeigen (auch unterordner)
 
Delphi-Quellcode:
procedure GetAllFiles(mask: string);
var Search: TSearchrec;
  verz: string;
  such: string;

begin
  such := ExtractFileName(mask);
  verz := ExtractFilepath(mask);
  if verz[length(verz)] <> '\' then verz := verz + '\';
{ alle Dateien suchen } 
  if FindFirst(mask, $23, Search) = 0 then
  repeat
      Form1.listbox1.items.add(verz + Search.Name);

  until FindNext(Search) <> 0;
  { Unterverzeichnisse durchsuchen } 
  if FindFirst(verz + '*.*', fadirectory, Search) = 0 then
   begin;
    repeat
      if ((search.attr and fadirectory) = fadirectory) and (search.name[1] <> '.') then
        GetAllFiles(verz + Search.Name + '\' + such);
    until FindNext(Search) <> 0;

  end;
  Findclose(Search);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   GetAllFiles('C:\myDelphiProg\*.pas');
end;


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