# Directory() does not include sub directories

**URL:** <https://clarionhub.com/t/directory-does-not-include-sub-directories/5781>\
**Category:** questions\
**Tags:** language\
**Created:** [January 1, 2023, 11:42am UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781 "2023-01-01T11:42:41Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 1, 2023, 11:42am UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/1 "2023-01-01T11:42:41Z")

</div>

Hi and happy new year to all of you!

Using Clarion 11.1 under Windows 11 I try to build a picture database.

The following code is copied from the documentation and only merely modified:

```auto
    PicPath = 'C:\Users\Volke\Dropbox\Portrait'
    setpath(longpath(PicPath))	
    DIRECTORY(AllFiles,'*.*',ff_:DIRECTORY) !Get all files and directories
    Recs = RECORDS(AllFiles)  
    LOOP LP = Recs TO 1 BY -1
       GET(AllFiles,LP)
       IF BAND(FIL:Attrib,ff_:DIRECTORY) AND FIL:ShortName <> '..' AND FIL:ShortName <> '.' 
             PICTURES:Name = FIL:Name
             PICTURES:Filename = longpath(FIL:Name)
             get(pictures,0)	
    		 if ~duplicate(pictures) then add(pictures).
    		 brw6.ResetSort(1)
    		 brw6.UpdateWindow()	
      CYCLE !Let sub-directory entries stay
     ELSE
      DELETE(AllFiles) !Get rid of all other entries
     END !IF
    END !LOOP
    setpath(longpath(ProgramPath))	

```

It only searches in 'C:\Users\Volke\Dropbox\Portrait' but it does not enter the sub-directories.  
In the DIRECTORY()-command I also tried ff\_:NORMAL and ff\_:NORMAL+ff\_:DIRECTORY.

Where's the mistake?

Thank you and kind regards,

Volker

---

<div class="post-metadata">

**Author:** ![anon23294430](https://clarionhub.com/user_avatar/clarionhub.com/anon23294430/32/3829_2.png) [@anon23294430](https://clarionhub.com/u/anon23294430)\
**Post date:** [January 1, 2023, 12:38pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/2 "2023-01-01T12:38:09Z")

</div>

Have you seen these, there might be some clues in these threads?

[Win10 C6 Directory() 8min 40 secs, C11 Directory() 31mins 47 seconds - ClarionHub](https://clarionhub.com/t/win10-c6-directory-8min-40-secs-c11-directory-31mins-47-seconds/5574/17)

[DosFileLookup in Directory mode does not select Default Directory - ClarionHub](https://clarionhub.com/t/dosfilelookup-in-directory-mode-does-not-select-default-directory/5140/2)

[Using DIRECTORY with ff\_:queue crashes with Remote Desktop Service and User Profile Disks - questions / tips - ClarionHub](https://clarionhub.com/t/using-directory-with-ff--queue-crashes-with-remote-desktop-service-and-user-profile-disks/431)

---

<div class="post-metadata">

**Author:** ![anon77170705](https://clarionhub.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@anon77170705](https://clarionhub.com/u/anon77170705)\
**Post date:** [January 1, 2023, 12:49pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/3 "2023-01-01T12:49:27Z")

</div>

Attached program lists names of both normal files and sub-directories.  
[test.clw](https://clarionhub.com/uploads/short-url/z6RqsRu2RZzxlGopbY8YlYheJt.clw) (3.0 KB)

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 1, 2023, 4:27pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/4 "2023-01-01T16:27:14Z")

</div>

Dear RichClaCode,

Of course I searched Clarion Hub before I asked. But I cannot find any help in the given examples.  
DIRECTORY() works so far, except that it doesn’t work recursively. I doesn’t look into the directories.  
It only works in the “top level”.

Kind regards,

Volker

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 1, 2023, 4:30pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/5 "2023-01-01T16:30:11Z")

</div>

Hi Also,

I cannot get this example to run. I am not familiar to compile .clw-files i/o .app-files.

Kind regards,

Volker

---

<div class="post-metadata">

**Author:** ![anon77170705](https://clarionhub.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@anon77170705](https://clarionhub.com/u/anon77170705)\
**Post date:** [January 1, 2023, 4:40pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/6 "2023-01-01T16:40:44Z")

</div>

> [@Volker](#):
>
> I am not familiar to compile .clw-files

Time to learn something new?

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 1, 2023, 4:45pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/7 "2023-01-01T16:45:42Z")

</div>

Always… 😃

But is there any documentation to do this? I searcheds the Clarion help for “Compile” and “clw” but did not find anything helpful.

---

<div class="post-metadata">

**Author:** ![anon77170705](https://clarionhub.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@anon77170705](https://clarionhub.com/u/anon77170705)\
**Post date:** [January 1, 2023, 4:52pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/8 "2023-01-01T16:52:56Z")

</div>

For me, the command-line make utility and so-called “legacy” PRJ projects are far better.  
[Dir.zip](https://clarionhub.com/uploads/short-url/A4dfmpW7CSMFCKxTSN1YBOTcCfo.zip) (2.3 KB)

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 1, 2023, 5:42pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/9 "2023-01-01T17:42:04Z")

</div>

Well, thank you.

Obviously I made everything correct because I got exactly the same error messages:

 ![image](https://clarionhub-uploads.s3.eu-north-1.amazonaws.com/original/2X/5/5be1ea5fd7b492da97c5ec1afae6d0a495375e5b.png)

It seems that browses do not work with ‘hand coded’ queues.

Also the “dir” in the AdjustDir-procedure is unknown.

Well. My main problem is still the Directory()-command. It works, but only in the top level directory (as defined in PicPath). But it should work recursively (looking also into the sub directories). Years ago (with Clarion 8) I got it to work but I don’t have the application anymore.

Kind regards,

Volker

---

<div class="post-metadata">

**Author:** ![anon77170705](https://clarionhub.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@anon77170705](https://clarionhub.com/u/anon77170705)\
**Post date:** [January 1, 2023, 5:54pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/10 "2023-01-01T17:54:20Z")

</div>

> [@Volker](#):
>
> Obviously I made everything correct because I got exactly the same error messages:

Open the solution from my previous message and just build it by pressing F8.

If you want to edit the source file, open the Solution Explorer toolbox, highlight the filename under the project, press right mouse button and choose the Open item in the menu.

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 1, 2023, 6:42pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/11 "2023-01-01T18:42:44Z")

</div>

Hi Also,

Thank you. At least I could get this to work.

In your example I make a double click onto directories. This always triggers a new directory() call. That’s not exactly what I want. I want to get every picture file calling directory() only once regardless in which level the picture is to be found. As far as I remember, directory() worked recursively - at least under Clarion 8.

 ![Example](https://clarionhub-uploads.s3.eu-north-1.amazonaws.com/original/2X/6/676b048c159ecd070f8b1527108ea424da156082.jpeg)

Kind regards,

Volker

---

<div class="post-metadata">

**Author:** ![Mike\_Duglas](https://clarionhub.com/user_avatar/clarionhub.com/mike_duglas/32/1061_2.png) [@Mike\_Duglas](https://clarionhub.com/u/Mike_Duglas)\
**Post date:** [January 1, 2023, 7:08pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/12 "2023-01-01T19:08:04Z")

</div>

Directory never worked recursively.

---

<div class="post-metadata">

**Author:** ![anon77170705](https://clarionhub.com/letter_avatar_proxy/v4/letter/a/ecccb3/32.png) [@anon77170705](https://clarionhub.com/u/anon77170705)\
**Post date:** [January 1, 2023, 7:17pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/13 "2023-01-01T19:17:08Z")

</div>

> [@Volker](#):
>
> That’s not exactly what I want.

My example just shows how to handle sub-directories.

> [@Volker](#):
>
> As far as I remember, directory() worked recursively - at least under Clarion 8.

No, DIRECTORY works for one folder only and not seeks for files in sub-folders.

---

<div class="post-metadata">

**Author:** ![CarlBarnes](https://clarionhub.com/user_avatar/clarionhub.com/carlbarnes/32/1859_2.png) [@CarlBarnes](https://clarionhub.com/u/CarlBarnes)\
**Post date:** [January 1, 2023, 7:22pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/14 "2023-01-01T19:22:39Z")

</div>

This GitHub example shows a recursive directory load to a queue in a function. Also displays in a LIST, both 1 level and a tree.

> **[GitHub - CarlTBarnes/Clarion-Folders: Clarion Folders Example Shows all IDE Folders and...](https://github.com/CarlTBarnes/Clarion-Folders)**
>
> Clarion Folders Example Shows all IDE Folders and file content. Example of undocumented PROP to get reference to FROM(Queue) of LIST.

---

<div class="post-metadata">

**Author:** ![anon23294430](https://clarionhub.com/user_avatar/clarionhub.com/anon23294430/32/3829_2.png) [@anon23294430](https://clarionhub.com/u/anon23294430)\
**Post date:** [January 1, 2023, 9:58pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/15 "2023-01-01T21:58:04Z")

</div>

Sorry I missed this link but it is the top link in the results for the search term “folder recursion”  
[How to call SHFileOperation API to recursively delete files and folders - questions - ClarionHub](https://clarionhub.com/t/how-to-call-shfileoperation-api-to-recursively-delete-files-and-folders/5172)

You also dont say what Tree Traversal method you want to use.  
[Tree traversal - Wikipedia](https://en.wikipedia.org/wiki/Tree_traversal)

I had written some code somewhere which let me choose what tree traversal methods to use, I’ll see if I can find it later on tonight, I dont think its in a class though, but it might have been some of the code that got wiped from my machine when it got hacked, so if I can find it, I’ll post it.

Edit. I’ve just seen above @CarlBarnes has posted some working code, so that should get you going.

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 2, 2023, 2:22am UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/16 "2023-01-02T02:22:33Z")

</div>

Hi Carl,

Thank you so much! After watching the Screenshots this is exactly what I looked for. Even more, because the tree would have been my next problem. I will test it next weekend.

Thank you again.

Volker

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 2, 2023, 2:29am UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/17 "2023-01-02T02:29:40Z")

</div>

Hi RichClaCode,

I read the Wikipedia article. Then I read it in German. And then I decided that my programming skills are not sufficient at all. Well, it‘s only a hobby.  
After years of professional photography, I just have a large photo collection now and want to bring it into some order.

I am rather confident that Carl‘s example will help.

Kind regards,

Volker

---

<div class="post-metadata">

**Author:** ![Volker](https://clarionhub.com/letter_avatar_proxy/v4/letter/v/77aa72/32.png) [@Volker](https://clarionhub.com/u/Volker)\
**Post date:** [January 2, 2023, 2:31am UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/18 "2023-01-02T02:31:38Z")

</div>

Hi Also,

That is strange as I once wrote a running program. Well, maybe I had a good example. Thank you!

Kind regards, Volker

---

<div class="post-metadata">

**Author:** ![FedericoNavarro](https://clarionhub.com/letter_avatar_proxy/v4/letter/f/2acd7d/32.png) [@FedericoNavarro](https://clarionhub.com/u/FedericoNavarro)\
**Post date:** [January 2, 2023, 3:08pm UTC](https://clarionhub.com/t/directory-does-not-include-sub-directories/5781/19 "2023-01-02T15:08:30Z")

</div>

Here is just another example of Directory usage, very similar to example posted by Also  
key points:  
-just 60 lines of codes (to highlight built-in Clarion RTL features)  
-drill up/down through directories with mouse or keyboard  
-resizable window  
-code compatible with older versions (tested also in c55)  
[DirBrowser.zip](https://clarionhub.com/uploads/short-url/7DCpDQWRadvY162aiQuCN4ajGmo.zip) (2,0 KB)

 ![Directory](https://clarionhub-uploads.s3.eu-north-1.amazonaws.com/original/2X/d/dcea2d398a10e61b997c640870aff96948ee7a2e.png)
