Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Alle Laufwerke schnell durchsuchen!

  Alt 21. Jun 2009, 18:00
Wenn nur eine bestimmte Datei gesucht wird, warum die Suchmaske von FindFirst/FindNext nicht gleich richtig initialisieren und Like ganz weglassen? Denkfehler... ohne Like (Einzelprüfung) geht rekusive Suche nicht, da für SubDirs ja alle Ordner gelistet werden müssen.

Laufwerke, dessen FAT nicht im Cache ist, brauchen beim ersten durchsuchen aber immer etwas länger.

Für jedes Laufwerk, das durchsucht werden soll aufrufen.
Delphi-Quellcode:
procedure FindFiles(const StartDir, Filter : String; SubDirs : Boolean; ResultList : TStringList);
var
  SR : TSearchrec;
  Found : Integer;
  Dir : String;
begin
  Dir := IncludeTrailingPathDelimiter(StartDir);
  Found := FindFirst(Dir + '*.*', faAnyFile, SR);
  while Found = 0 do begin
    if SubDirs
    and (SR.Attr and faDirectory = faDirectory)
    and (SR.Name[1] <> '.') then
      FindFiles(Dir + SR.Name, Filter, SubDirs, ResultList);

    if Like(SR.Name, Filter) then
      ResultList.Add(Dir + SR.Name);

    Found := FindNext(SR);
  end;
  FindClose(SR);
end;
  Mit Zitat antworten Zitat