Ich kann es hier jetzt nicht testen und habe auch nicht viel Zeit, aber als kleiner Tipp, benutze nur eine Schleife zum auflisten der Dateien, in etwa so:
Delphi-Quellcode:
if FindFirst(Maske, FileAttr, Search) = 0 then
begin
repeat
if (Search.Attr & faDirectory) == faDirectory then // geht das so, oder ist das zuviel des c? :)
GetAllFiles(...)
else
Items.Add(SFPath + Search.Name);
until FindNext(Search) <> 0
end;
Ist ungetestet, aber sollte etwas mehr Performance bringen. Naja, und ich schreibe Schlüsselwörter immer klein. Aber...