Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordnerinhalt (https://www.delphipraxis.net/105814-ordnerinhalt.html)

Masteric 30. Dez 2007 20:38


Ordnerinhalt
 
Hi,
ich versuche ein Tool zu programmieren, welches mir Ordner die eine bestimmte Größe Überschreiten anzuzeigen.

Als erstes wollte ich erstmal probieren, alle Ordner und Unterordner und Datein, eines bestimmten Rootverzeichnisses anzuzeigen.....

bei meiner Suche stieß ich auf folgende function Function, welche zwar alle Ordner/Unterordner zurückgibt, aber datein nur mit einer bestimmten Endung. Muss ich die Function jetzt mit jeder Endung aufrufen oder gibt das da eine andere Lösung???


Gruß Masteric

Christian Seehase 30. Dez 2007 21:00

Re: Ordnerinhalt
 
Moin Masteric,

ich habe mich jetzt nicht in das von Dir genannte Beispiel eingelesen, würde es aber so machen:


Delphi-Quellcode:
procedure FindAllFilesAndFolders(const AsRoot : string;const AslResult : TStrings);
// AsRoot: Verzeichnis, dass durchsucht werden soll
// AslResult: Die Liste, die die Ergebnisse bekommt

var
  sr   : TSearchRec;
  sRoot : string;

begin
  // Nichts gefunden, dann fertig
  if FindFirst(IncludeTrailingPathDelimiter(AsRoot)+'*.*',faAnyFile,sr) <> 0 then exit;
  try
    // Ansonsten das übergebene Startverzeichnis mit \ am Ende merken
    sRoot := IncludeTrailingPathDelimiter(AsRoot);
    repeat
      // Wurde ein Verzeichnis gefunden?
      if (sr.Attr and faDirectory) = faDirectory then begin
        // Nicht die Standardverzeichnisse . bzw. .. ?
        // Da . und .. nur Verzeichnisse sein können, wird erst als zweites darauf geprüft
        if (sr.Name <> '.') and (sr.Name <> '..') then begin
          // Dann mit in die Ergebnisliste aufnehmen
          AslResult.Add(sRoot+sr.Name);
          // und auch dieses durchsuchen
          FindAllFilesAndFolders(sRoot+sr.Name,AslResult);
        end;
      end else begin
        // Kein Verzeichnis, dann sollte es eine Datei sein.
        // und kann somit gleich in die Eregebnisliste
        AslResult.Add(sRoot+sr.Name);
      end;
    // bis nichts weiter gefunden wurde
    until FindNext(sr) <> 0;
  finally
    // Jetzt noch die belegten Resourcen freigeben
    FindClose(sr);
  end;
end;

Masteric 30. Dez 2007 21:15

Re: Ordnerinhalt
 
Großes Dankeschön an dich!! :thumb:

Nur ein kleiner Hinweis, das muss eine Procedure sein und keine Function, sonst geht das ganze nicht.


Gruß Masteric

Christian Seehase 30. Dez 2007 21:22

Re: Ordnerinhalt
 
Moin Masteric,

Zitat:

Zitat von Masteric
Nur ein kleiner Hinweis, das muss eine Procedure sein und keine Function, sonst geht das ganze nicht.

Stimmt :wall:

Ich hatte das Ganze direkt hier reingeschrieben, ohne es zu testen :oops:

Masteric 8. Jan 2008 00:06

Re: Ordnerinhalt
 
@Christian, das kann jedem guten Programmierer mal passieren :-D , bei so vielen Functionen und Proceduren :-D

Gruß Masteric


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