Mit and setzt du das Attribut, es soll aber weg.
Und mit "ASearchRec.Attr := ASearchRec.Attr
and faReadOnly;" werden alle anderen Attribute zurückgesetzt, nur ein eventuell vorhandenes ReadOnly nicht.
Ausserdem müssen die Attribute auch noch der Datei und nicht nur dem SearchRecord zugewiesen werden.
Code:
FileSetAttr([color=gray]Verzeichnis +[/color] ASearchRec.Name, ASearchRec.Attr and not faReadOnly);