>>I am using ADIR to get a specific number of files from a directory based on a criteria. So, ADIR(laFile,gcFat+'thread\*.*') will create an array and I can now use ALEN(laFile,1) to get the file count. However, on big directory this is causing a big array to be created just to get the number of files. How can I optimize that?
>
>Michel,
>As Nadya posted, ADir() oes return the number of rows in the array. But as you already sigthed, the array still gets built and this could a significant amount of time on large directories. It could also fail on very large directories because of the 65000 element limit of arrays.
>
>You can use the old Sys(2000) function.
>local lxx, lcfile
>lxx = 0
>lcfile = sys(2000,gcFat+'thread\*.*')
>do while !(lcfile=='')
> lcfile = sys(2000,gcFat+'thread\*.*',1)
> lxx = lxx + 1
>enddo
>
>If you only need the count, this should give you what you want.
I tried it and it works well.
However, it would be nice is the FileSystemObject would allow that in one command.