recursion limit when creating file list of harddrive

Alex Tweedly alex at tweedly.net
Sun Oct 25 18:39:51 EDT 2015


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





More information about the use-livecode mailing list