Hi, Michael!

What I want to get is negative depth counter and control to do 
not iterate deeper than depth parameter.
And I actualy did the same like in your example.
All that rez variable is just for debugging and studying purposes 
yet ;-)
What is my problem - that in rez output I can't see the depth 
variable from line:
        repend rez [ "<br>dir:" join thisDir aFile depth + 1 ]
f.ex.:
dir:/c/www/sitex/02setup/Test2/5/c/www/sitex/02setup/Test2/
003.art
dirinfo.txt
dir:/c/www/sitex/02setup/Test2/test3/6/c/www/sitex/02setup/Test2/test3/
003.art
dirinfo.txt

At the end of line dir:... should be a number!
It is why I started to play with curDepth...

Janeks


On 12 Apr 2005 at 1:05, Michael Berg wrote:

> 
> Hi Janeks,
> 
> why don't you simply use just the depth parameter to the function and
> if  you recurse down the directory tree add always one to the depth
> value.  Then you can do in the function whatever you like with the
> depth parameter  and you don't need a local parameter. It's anyway not
> clear to me how your output is supposed to look exactly.
> 
> What about this version, which works but still gives some kind of 
> senseless output ?
> 
> readChaptDir2: func [ thisDir depth
>  /local rez bl
> ] [
>  rez: copy thisDir
>  bl: sort read thisDir  ;separate to be able to see what happends
>  probe bl   ;just for debugging
>  repeat aFile bl copy/deep [
>   print aFile  ;just for debugging
>   either #"/" = last aFile [
>    repend rez [ "<br>dir:" join thisDir aFile depth + 1 ]
>    repend rez readChaptDir2 join thisDir aFile (depth + 1
>   ][
>    repend rez [ <br> aFile ]
>   ]
> 
>  ]
>  return rez
> ]
> 
> readChaptDir2 %somedir/ 0
> 
> 
> 
> Michael
> 
> On Mon, 11 Apr 2005 23:55:54 +0300, <[EMAIL PROTECTED]> wrote:
> >
> > Thanks, Michael!
> >
> > Those bindings is unlear for me yet.
> > But at least those variable scopes stays more clearer.
> >
> > Now the function is working with "repeat" and sorting list in a
> > proper way. Now the problem is how to add depth counter:
> >
> > readChaptDir2: func [ thisDir depth
> >     /local rez curDepth
> >     ] [
> >     curDepth: depth - 1
> >     rez: copy thisDir
> >     repeat aFile sort read thisDir copy/deep [
> >             either #"/" = last aFile [
> >                     repend rez [ "<br>dir:" join thisDir aFile
> > curDepth ]
> >                     repend rez readChaptDir2 join thisDir aFile
> > curDepth
> >             ][
> >                     repend rez [ <br> aFile ]
> >             ]
> >             
> >     ]
> >     return rez
> > ]
> >
> > brgds
> >
> > Janeks
> >
> > On 11 Apr 2005 at 1:03, Michael Berg wrote:
> >
> >>
> >> Ok, last time - I hope. :-)
> >>
> >> If I'm right the reason why the error came up at the first empty
> >> directory  and if there has been none, then only the first subtree
> >> is traversed,  because of the recursive rebinding of the word
> >> 'aFile to the repeat block.  While recursing down the first branch
> >> of the directory tree the block gets  all the time bound to a new
> >> version of 'aFile. Upon returning back from  the recursion the
> >> function one level up doesn't find any more the 'aFile
> >>  from before the recursive call and thus the test doesn't work or
> >>  even
> >>
> >> fails. Fails when 'aFile has been bound to no value in the
> >> recursion when  the directory was empty or to the last value of the
> >> file in the deepest  directory, which just gets added as often as
> >> during the walk up in the  tree some files (no directories) are
> >> encountered, because always the  second block of 'either gets
> >> executed.
> >>
> >> :-)
> >>
> >> Just a question to somebody who might know: One of the reasons why
> >> the
> >>  binding mechanisms of Rebol are necessary is to make the
> >> keywordlessness  possible, else something like 'repeat wouldn't be
> >> possible, right ??? But nevertheless I think these binding issues
> >> should be one of the first  things to be explained to a newcomer.
> >> It is an important property of Rebol  and should be treated like
> >> this. If there are chances to encounter these  things in normal
> >> life they have to be explained appropriately already on  the
> >> beginning and not on some articles (Ladislavs Bindology) or some 
> >> sidenote in the documentation that a function changes it's body
> >> argument.  Without deeper glue of Rebol it's hardly to get the
> >> reason and just simply using hints like using copy/deep on a block
> >> in some circumstances is hard  to remember and hard to explain.
> >> Thus if Rebol is like this it should be  put on the frontplate.
> >> ????!!!!
> >>
> >> Michael
> >>
> >> On Sun, 10 Apr 2005 23:43:04 +0300, Michael Berg <[EMAIL PROTECTED]>
> >> wrote:
> >>
> >> >
> >> > :-) Sorry, I maybe posted it too fast. I'm still searching for
> >> > the the  why.
> >> >
> >> > I think that's one of the bad parts of Rebol. This dynamic
> >> > binding might be powerful, but it causes a lot of trouble as
> >> > well. For instance besides your note, I don't get right now why
> >> > it for instance without copy/deep brings up an error when it
> >> > encounters an empty directory, und with copy/deep it runs. (at
> >> > least without the error message)
> >> >
> >> > Nevertheless it works with copy deep if you add in the argument
> >> > section a "/local rez". I think you forgot to make rez local to
> >> > the function as it is by standard global and gets everytime
> >> > deleted. :-)
> >> >
> >> > Michael
> >> >
> >> > On Sun, 10 Apr 2005 23:13:14 +0300, <[EMAIL PROTECTED]> wrote:
> >> >
> >> >>
> >> >> Thanks!
> >> >> I noted this (copy/deep), but now it is working without errors,
> >> >> but not corectly: First line is wrong - first directory of base
> >> >> dir is added, and then just files of base dir.
> >> >>
> >> >> brgds
> >> >> Janeks
> >> >>
> >> >> On 10 Apr 2005 at 22:44, Michael Berg wrote:
> >> >>
> >> >>>
> >> >>> Hi,
> >> >>>
> >> >>> if you change the repeat line to
> >> >>>
> >> >>> repeat aFile read thisDir copy/deep [
> >> >>>
> >> >>> it will work, as repeat modifies the block to be repeated. See
> >> >>> also at http://www.rebol.com/docs/words/wrepeat.html the user
> >> >>> comment from Ladislav.
> >> >>>
> >> >>> Didn't know this myself - until now. :-)
> >> >>>
> >> >>> Michael
> >> >>>
> >> >>>
> >> >>>
> >> >>> On Sun, 10 Apr 2005 21:36:25 +0300, <[EMAIL PROTECTED]> wrote:
> >> >>>
> >> >>> >
> >> >>> > Hi, Rebolers!
> >> >>> >
> >> >>> > I am new in rebol scopes. So it seems, that it cause problems
> >> >>> > in my recursive directory reading function. Could somebody 
> >> >>> > give me a bit more description about variable scopes in
> >> >>> > following case:
> >> >>> >
> >> >>> > readChaptDir2: func [ thisDir ] [
> >> >>> >      rez: copy thisDir
> >> >>> >      repeat aFile read thisDir [
> >> >>> >              either #"/" = last aFile [
> >> >>> >                      repend rez [ "<br>dir:" join thisDir aFile ]
> >> >>> >                      repend rez readChaptDir2 join thisDir aFile
> >> >>> >              ][
> >> >>> >                      repend rez [ <br> aFile ]
> >> >>> >              ]
> >> >>> >              
> >> >>> >      ]
> >> >>> >      return rez
> >> >>> > ]
> >> >>> >
> >> >>> > Looking forward,
> >> >>> >
> >> >>> > Janeks
> >> >>> >
> >> >>>
> >> >>>
> >> >>> --
> >> >>> To unsubscribe from the list, just send an email to
> >> >>> lists at rebol.com with unsubscribe as the subject.
> >> >>>
> >> >>>
> >> >>
> >> >>
> >> >>
> >> >
> >> >
> >>
> >>
> >> --
> >> To unsubscribe from the list, just send an email to
> >> lists at rebol.com with unsubscribe as the subject.
> >>
> >>
> >
> >
> >
> 
> 
> -- 
> To unsubscribe from the list, just send an email to 
> lists at rebol.com with unsubscribe as the subject.
> 
> 



-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to