Wie wäre es, wenn man auf den Compiler hört, der hier hoffentlich sich über das nicht initialisierte Result beschwert?
Und warum Abort, wenn .... rate mal wofür das Result ist.
OK, Result um den einzelnen Eintrag zu filtern und Abort zum Komplettabbruch, aber dennoch muß Result gesetzt sein.
Path = mypath
ist das Rootverzeichnis,
aber dennoch willst du ja die Verzeichnisse darin dennoch haben, also
Result := (SearchRec.Attr and faDirectory <> 0) or (Path <> mypath);