Wenn hier if (Rec.Attr and faDirectory = faDirectory)
:
AND wir immer vor = aufgelöst, also passt es.
Muss ja so sein, denn dies
if (Rec.Attr and (faDirectory = faDirectory))
wird gar nicht kompiliert, dazu müsste man schon explizit Rec.Attr nach Boolean casten, dann ist man aber auch selbst Schuld, wenn es nicht stimmt.
Da aber alle Dateiattribute nur aus einem Bit bestehen, kann man das noch kürzen
if (Rec.Attr and faDirectory <> 0)
Kann man, hat aber keinen Mehrwert. Wozu soll man sich Gedanken machen (oder nachsehen), ob wirklich alle Attribute 2er-Potenzen sind? Da bleib ich lieber bei der gezeigten Schreibweise, das passt immer, selbst wenn irgendwann mal ein mehrbittiges Attribut hinzukommen sollte.