recursion limit when creating file list of harddrive

Alex Tweedly alex at tweedly.net
Sun Oct 25 21:09:30 EDT 2015


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





More information about the use-livecode mailing list