Einzelnen Beitrag anzeigen

Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#10

Re: Schnelle Dateisuche

  Alt 7. Jan 2008, 15:52
Dass das aber dann doppelt so lange dauert (so kam es mir bei meinen Versuchen jedenfalls vor) ist aber schon klar, oder?
Du lässt zweimal FindFirst für dich Filtern - besser wäre ein Aufruf, wo du selbst Filterst. Ich würde einfach ein faAnyFile benutzen in einem Durchgang, und dann prüfen, ob es eine Datei ist, oder ein Verzeichnis. In etwa so (lieblos hingeklatscht):

Delphi-Quellcode:
procedure FindStuff(Dir: string);
var
  Search: TSearchRec;
  IsFound: Boolean;
  i: Integer;
  Dirs: TStringList;
begin
  Dirs := TStringList.Create;
  try
  IsFound := FindFirst(Dir + '*.*', faAnyFile, Search) = 0;

  while IsFound do begin
    if (Search.Name <> '.') and (Search.Name <> '..') and (not ((Search.Attr and faDirectory) = faDirectory))
    then
    begin
      // Wir haben eine Datei gefunden!
    end;

    if ((Search.Attr and faDirectory) = faDirectory) and (Search.Name <> '.') and (Search.Name <> '..') then
    begin
      // Ein Verzeichnis.
      Dirs.Add(Dir + Search.Name);
    end;

    IsFound := FindNext(Search) = 0;
  end;
  finally
    Dirs.Free;
  end;
  for i := 0 to Dirs.Count - 1 do
    FindStuff(Dirs[i]);
end;
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat