Lo acabo de probar pero al realizar la llamada se cuelga todo el system..... he revisado en el taskmanager y cuado lo ejecuto como que empieza a consumir toda la ram....a que se deberà......???
En principio cuando lo probé no fallaba. Ten en cuenta que si estás analizando una carpeta con un contenido muy grande de subcarpetas, ocurren dos cosas: la primera es que el código tardará mucho y parecerá colgado. La segunda que el consumo de la pila se dispara y si se consume...
Para evitar que parezca colgado puedes añadir una línea con un Application.ProcessMessages, por ejemplo en esta parte:
...... repeat Application.ProcessMessages; if ((SR.Attr and fadirectory) = fadirectory) then begin .......
Otra opción interesante es usar un hilo a parte.
Si el problema está en la pila, debes cambiar por completo esa función. Usa los otros ejemplos que te dí.
Saludos.