Moin 1ermehr,
auch wenn es jetzt so bei Dir wohl funktioniert, wie Du es Dir vorstellst, habe ich noch ein paar Anmerkungen
FindFirst ist eine Funktion, die mit ihrem Rückgabewert kenntlich macht, ob sie erfolgreich aufgerufen wurde.
Hier fehlt mir die Prüfung, und entsprechende Verzweigung.
Durch einen erfolgreichen Aufruf von FindFirst, wird eine Resource belegt, nämlich ein
Handle durch TSearchRec.
Deshalb sollte sichergestellt werden, dass die Resource auch wieder freigegeben wird (try-finally => Resourcenschutzblock)
Delphi-Quellcode:
if FindFirst(...) <> 0 then exit;
try
//... mach was mit der Resource
finally
FindClose(...);
end;
Da FindFirst intern FindFirstFile aufruft, und diese Funktion nur die Namesmaske zur Prüfung heranzieht, nicht aber die Attribute (das macht, teilweise FindFirst), fährt man, i.d.R. besser, wenn man immer faAnyFile angibt, und dann, nach Bedarf, selber filtert.
Diese Prüfung:
if fts.Attr = faDirectory then ...
setzt voraus, dass auch nur das Attribut für ein Directory gesetzt ist. Es kann aber auch versteckt sein, ausserdem verwendet Windows intern das ReadOnly-Flag für Verzeichnisse (wenn sich Windows dabei verhaspelt, kann man schon mal ein schreibgeschütztes Verzeichnis bekommen
)
Besser wäre es so abzufragen:
if (fts.Attr and faDirectory) = faDirectory then ...