Thema: Delphi Erweiterte Suchfunktion

Einzelnen Beitrag anzeigen

Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#1

Erweiterte Suchfunktion

  Alt 13. Mai 2007, 17:37
Hallo! Zum Suchen von Dateien verwende ich bis jetzt folgende Funktion aus der CodeLib:
Delphi-Quellcode:
procedure FindAllFiles(MediaList: TStrings; RootFolder: string; Mask: string ='*'; Recurse: Boolean = True; AddFolderNames: Boolean = False; IgnoreMaskAtFolderNames: Boolean = True);
  procedure LFindAllFiles(AParentFolder: String);
  var LSearchRec: TSearchRec;
  begin
    if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then
    begin
      repeat
      Application.ProcessMessages;
        if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
        begin
          if LSearchRec.Attr and faDirectory = faDirectory then
          begin
            if AddFolderNames and
               (IgnoreMaskAtFolderNames or Like(AnsiLowerCase(LSearchRec.Name), Mask)) then
              MediaList.AddObject(AParentFolder + LSearchRec.Name, TObject(True));
              Application.ProcessMessages;
            if Recurse then
              LFindAllFiles(AParentFolder + LSearchRec.Name + '\');
          end
          else if Like(AnsiLowerCase(LSearchRec.Name), Mask) then
            MediaList.AddObject(AParentFolder + LSearchRec.Name, TObject(False));
        end;
      until FindNext(LSearchRec) <> 0;
      FindClose(LSearchRec);
    end;
  end;
begin
  Mask := AnsiLowerCase(Mask);
  LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder));
end;
Wie kann ich diese Funktion erweiter, dass Sie
1: Mehrere Masken in einem Suchlauf anwendet (z.B. statt Mask:='*.mp3'; auch Mask:='*.mp3;*.wav'; möglich ist) und
2: Man bestimmte Verzeichnisse (z.B. C:\WINDOWS\) von der Suche ausschließen kann?
--
Danke für die Hilfe.
Matthias
  Mit Zitat antworten Zitat