Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
ADIR optimization
Message
From
12/08/2001 22:56:58
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00542818
Message ID:
00542855
Views:
22
>>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.
Michel Fournier
Level Extreme Inc.
Designer, architect, owner of the Level Extreme Platform
Subscribe to the site at https://www.levelextreme.com/Home/DataEntry?Activator=55&NoStore=303
Subscription benefits https://www.levelextreme.com/Home/ViewPage?Activator=7&ID=52
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform