Wenn möglich, versuch ich schon das vom Delphi selbst zu nutzen.
Ist nicht immer das Idealste, aber z.B. die IOUtils sind einfacher und dadurch fehlerunanfälliger und erzeugen auch so "übersichtlicheren" Code, gegenüber den alten Pascal-Prozeduren oder der
WinAPI, vor allem wenn es auch noch rekursiv oder iterativ wird.
Dann muss aber der Compiler auf Kurzschluss gestellt sein.
Was aber auch der Standard ist und
IMHO besser auch sein sollte.
Wobei es hier jetzt auch nicht schlimm wäre, jedenfalls im Endergebnis. (und bei dem zweiten Vergleich würde es nicht stören, wenn i auf einem Zufallswert läge)
PS: PostgreSQL hatte mal die volle Auswertung im PLSQL, aber sie haben eingesehn, dass es voll beschissen ist.
Es ist auch meistens einer der Fälle, wo ich dieses Compilersetting nicht explizit vorgebe und auch nicht drauf prüfe, falls es wer umstellt ... isser halt selbst Schuld
(andere Settings prüfe ich entweder oder gebe sie für meine Funktion/
Unit vor)
Man muß nichtmal das Result-Array der Funktion benutzen. (einfach immer blind False zurückgeben, damit das Array nicht sinnlos gefüllt wird)
In der Methode kannst du das Gewünschte ja so benutzen und dort auch extern speichern, wie und wo auch immer du willst. (oder Beides gemeinsam nutzen)
Für ein Projekt hatte ich zuletzt GetFiles nur benutzt um "alle" Dateien zu suchen
und dann nachher auf dieses Array gefiltert, für unterschiedliche Dateien und Vorgänge,
also einmal suchen und dann "schnell" das Array (als Cache), anstatt für Jeden einzeln.
So könnte man auch das noch gemütlich z.B. mit einer RecentListe kombinieren.
In diesem Fall war es einfacher die Vergleichmethode sich zu sparen.
Das RESULT vorher in eine Variable und man kann beim Anzeigen einen Fortschritt anzeigen (exklusive der Zeit für die Suche selbst).
Direkt in der Vergleichsmethode arbeiten, könnte man beim Suchen die Position (Pfad) als Fortschritt anzeigen (weiß aber natürlich die Anzahl nicht).
Doppelt suchen hatte ich früher mal gemacht, aber es ist immer langsamer.
Na gut, beim Suchen den Suchfortschritt (wenn man viele Dateien/Verzeichnisse sucht)
und am Ende dann nochmal über das Array und dort kann man dann den Gesamtfortschritt + Restzeit ausgeben, wenn die Verarbeitung "langsamer" ist.