Wiem, że problem wyszukiwania plików i folderów wielokrotnie przewijał się przez forum, ale nigdzie nie znalazłem szybkiego algorytmu na wyszukiwanie wszystkich plików, podkatalogów, itd. w danym katalogu.
Tzn. mam algorytm, ale działa on na zasadzie rekurencji, więc jak przeszukuje cały dysk systemowy to trochę to trwa.
Żeby za bardzo nie zamieszać, zamieszczam uproszczony algorym, z którego korzystam (po prostu obcięty z nieistotnych fragmentów dla mojego problemu):
procedure Skanuj(Dir: String);
var
Found, n : integer;
F : TSearchRec;
procedure Dodaj;
begin
// tutaj funkcje dodawania do listy
end;
begin
Dir := IncludeTrailingPathDelimiter(Dir);
Found := FindFirst(Dir+'*', faAnyFile, F);
While Found = 0 do
begin
If (F.Name<>'.') and (F.Name<>'..') then
If (F.Attr and faDirectory)= faDirectory then
begin
Dodaj;
Skanuj( Dir+F.Name);
end
else
begin
Dodaj;
end;
Found := FindNext(F);
end;
FindClose(F);
end;
Wiecie jak to przyśpieszyć? Chyba najlepiej byłoby to przekształcić jakoś na algorytm iteracyjny.