recursion limit when creating file list of harddrive
JB
sundown at pacifier.com
Sun Oct 25 21:38:33 EDT 2015
Okay - Thank you very much again!
JB
> On Oct 25, 2015, at 6:09 PM, Alex Tweedly <alex at tweedly.net> wrote:
>
> I'm not sure about cursor setting - you might put in a counter, and set it to busy every 1000 (or 10,000) times through loop.
>
> What if we want only folder paths ?
>
> I did briefly consider saying that the @pFiles and @pFolders parameters could have TRUE/False values on input, and then say something like
> (NB - typed into email, not tested !!!!)
>
> on mouseUp
> local theFolder
> answer folder "Start where"
> put it into theFile
>
> local filesList, folderList, errorList
> put the millisecs into tStart
> AllFiles theFile, true, filesList, folderList, errorList
>
> put filesList into field "Field 1"
>
> end mouseUp
>
> command AllFiles theFolder, pDetail, @pFiles, @pFolders, @pErrors
>
> set the defaultFolder to theFolder
> if the result is not empty
> then
> put "initial folder" & theFolder &CR afte rpErrorList
> exit to top
> end if
>
> put 0 into tHighest
> put 0 into tCurrent
>
> add 1 to tHighest
> put theFolder into tA[tHighest]
>
> repeat until tCurrent >= tHighest
>
> add 1 to tCurrent
>
> put tA[tCurrent] into tNow
> set the defaultFolder to tNow
> if the result is not empty then
> put "Problem with" && tNow &Cr after pErrors
> next repeat
> end if
>
> if pFiles is TRUE then -- Do we want to return list of files ??
> if pDetailed then
> put the detailed files into tF
> else
> put the files into tF
> end if
> repeat for each line L in tF
> put tNow & "/" & L &CR after pFiles
> end repeat
> end if
>
> put the folders into tF
> filter tF without ".*"
>
> repeat for each line L in tF
> add 1 to tHighest
> put tNow & "/" & L into tA[tHighest]
> end repeat
>
> end repeat
>
> if pFolders is TRUE then -- Do we want to return list of folders
> combine tA with CR
> put tA into pFolders
> end if
>
> end AllFiles
>
>
>
> On 25/10/2015 23:58, JB wrote:
>> I have been testing it out and it is working good
>> so far. I set the cursor to watch after selecting.
>> I am not sure if setting it to busy in a repeat will
>> take too much time on large operations.
>>
>> Is there and easy way to have it only list the
>> folder paths?
>>
>> JB
>>
>>
>>> On Oct 25, 2015, at 3:39 PM, Alex Tweedly <alex at tweedly.net> wrote:
>>>
>>> Well, it's a sad comment on my filing system, but it was easier to rewrite this handler from scratch (and memory) than it was to find the original :-)
>>>
>>> Note this is done as a handler rather than a function, because it has 3 return values - a list of files, a list of folders, and a list of any errors. It would be trivial to convert to a function if you prefer that; I just dislike functions with return parameter values.
>>>
>>> So, it's had a decent half-hour of testing, but no more than that. Usual money back guarantee applies ....
>>>
>>> btw - there is a variant using "repeat for each line" which is marginally more efficient, but it depends on a quirk of the current LC implementation, which allows appending to the variable being iterated over - so I won't mention it here; it could (conceivably, but not likely) fail in some future version.
>>>
>>>
>>> on mouseUp
>>> local theFolder
>>> answer folder "Start where"
>>> put it into theFile
>>>
>>> local filesList, folderList, errorList
>>> put the millisecs into tStart
>>> AllFiles theFile, true, filesList, folderList, errorList
>>>
>>> put filesList into field "Field 1"
>>>
>>> end mouseUp
>>>
>>> command AllFiles theFolder, pDetail, @pFiles, @pFolders, @pErrors
>>>
>>> set the defaultFolder to theFolder
>>> if the result is not empty
>>> then
>>> put "initial folder" & theFolder &CR afte rpErrorList
>>> exit to top
>>> end if
>>>
>>> put 0 into tHighest
>>> put 0 into tCurrent
>>>
>>> add 1 to tHighest
>>> put theFolder into tA[tHighest]
>>>
>>> repeat until tCurrent >= tHighest
>>>
>>> add 1 to tCurrent
>>>
>>> put tA[tCurrent] into tNow
>>> set the defaultFolder to tNow
>>> if the result is not empty then
>>> put "Problem with" && tNow &Cr after pErrors
>>> next repeat
>>> end if
>>>
>>> if pDetailed then
>>> put the detailed files into tF
>>> else
>>> put the files into tF
>>> end if
>>>
>>> repeat for each line L in tF
>>> put tNow & "/" & L &CR after pFiles
>>> end repeat
>>>
>>> put the folders into tF
>>> filter tF without ".*"
>>>
>>> repeat for each line L in tF
>>> add 1 to tHighest
>>> put tNow & "/" & L into tA[tHighest]
>>> end repeat
>>>
>>> end repeat
>>>
>>> combine tA with CR
>>> put tA into pFolders
>>>
>>> end AllFiles
>>>
>>> Let me know of any problems.
>>> -- Alex.
>>>
>>> On 25/10/2015 03:12, JB wrote:
>>>>> On Oct 24, 2015, at 5:33 PM, Alex Tweedly <alex at tweedly.net> wrote:
>>>>>
>>>>>
>>>>> If that's not it, then you need to change to a serialized rather than a recursive treewalk - I'm sure that's been posted on the use-list some time ago (if you can't find it, let me know and I'll dig one up)
>>>>>
>>>>> -- Alex.
>>>> I would like a copy of that if you
>>>> dig one up.
>>>>
>>>> JB
>>>>
>>>>
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
More information about the use-livecode
mailing list