Thema: Delphi Ordnernamen auslesen

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Ordnernamen auslesen

  Alt 25. Apr 2009, 09:31
Meinst Du so etwas?
Delphi-Quellcode:
procedure ListSubDirsContainingFiles(StartPath: string;
                                     const Extension: string;
                                     const sList: TStrings);
var Rec: TSearchRec;
    FileFound: Boolean;
begin
  //Bei ungültigem Verzeichnis Exception auslösen
  if not DirectoryExists(StartPath) then
    raise Exception.CreateFmt('Verzeichnis "%s" existiert nicht.',
                              [ExcludeTrailingPathDelimiter(StartPath)]);
  //Sicherstellen, dass Verzeichnisname mit Backslash endet
  StartPath := IncludeTrailingPathDelimiter(StartPath);
  //lokale Variable initialisieren
  FileFound := false;
  //im aktuellen Verzeichnis nach Dateien mit der angegebenen Endung suchen
  if FindFirst(StartPath + Extension,faAnyFile,Rec) = 0 then
    try
      repeat
        //nur Dateien, keine Verzeichnisse
        FileFound := (Rec.Attr and faDirectory) = 0;
      until FileFound or (FindNext(Rec) <> 0);
    finally
      SysUtils.FindClose(Rec);
    end;
  //bei Treffer Verzeichnis zur Liste hinzufügen
  if FileFound then
    sList.Add(ExcludeTrailingPathDelimiter(StartPath));
  //nun nach Unterverzeichnissen suchen und rekursiv durchgehen
  if FindFirst(StartPath + '*',faDirectory,Rec) = 0 then
    try
      repeat
        if ((Rec.Attr and faDirectory) = faDirectory) and
           (Rec.Name <> '.') and (Rec.Name <> '..') then
          ListSubDirsContainingFiles(StartPath + Rec.Name,Extension,sList);
      until FindNext(Rec) <> 0;
    finally
      SysUtils.FindClose(Rec);
    end;
end;
Ich hoffe, ich habe verständlich kommentiert. Evtl. kann das noch optimiert werden, aber es funktionierte zumindest in kurzen Tests
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat