![]() |
Erweiterte Suchfunktion
Hallo! Zum Suchen von Dateien verwende ich bis jetzt folgende Funktion aus der CodeLib:
Delphi-Quellcode:
Wie kann ich diese Funktion erweiter, dass Sie
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; 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. |
Re: Erweiterte Suchfunktion
Moin Argonix,
da FindFirstFile nur eine Suchmaske zur Zeit zulässt, wirst Du anhand der gefundenen Dateien selber filtern müssen, welche Du haben willst, und welche nicht. Beispielsweise könntest Du einen weiteren Parameter deklarieren, der dann die gewünschten Extensions enthält ('.mp3.wav.').
Delphi-Quellcode:
Analog gilt das dann auch für die auszuschliessenden Pfade, obwohl sich hier wohl eine StringListe als Parameter anböte.
if pos(AnsiLowerCase(ExtractFileExt(...))+'.',AsExtensions) > 0 then ....
Delphi-Quellcode:
if AExclude.IndexOf(...) > -1 then ...
|
Re: Erweiterte Suchfunktion
Das wäre eine Möglichkeit. Aber so dauert die Suche ewig, wenn das Tool erst den kompletten Inhalt eines Laufwerks in einer Liste ablegen muss, die dann durchsucht wird. Geht das vielleicht effizienter? (Es muss ja nicht TSearchRec sein)
|
Re: Erweiterte Suchfunktion
Gibt es außer der Windows-Funktion keine andere Suchroutine?
|
Re: Erweiterte Suchfunktion
|
Re: Erweiterte Suchfunktion
Zitat:
![]() Das Ausschließen musst du dann per Code erledigen. Leider wurde die Funktion nicht in dieser Form in der Code-Lib aufgenommen. Gruss vepman |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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