BASIC

Author Topic: Need recursive filelist, anyone?  (Read 1302 times)

Offline ampos

  • Prof. Inline
  • *****
  • Posts: 1594
    • View Profile
    • AMpostata Website
Need recursive filelist, anyone?
« on: 2011-Oct-06 »
I need to get all the files with their complete path$ inside a dir.

The files can be also on dirs, or have more dirs... (recursive?)

Anyone?
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

Offline ampos

  • Prof. Inline
  • *****
  • Posts: 1594
    • View Profile
    • AMpostata Website
Re: Need recursive filelist, anyone?
« Reply #1 on: 2011-Oct-07 »
Solved :)

Code: GLBasic [Select]
        REDIM file$[1];file$[0]=""
       
        ok = SETCURRENTDIR(path$) // One up
        cur$ = GETCURRENTDIR$()
        num = GETFILELIST("*.*", file$[])
        num_dir  = INTEGER(num / 0x10000) // Hi-Word
        num_file = MOD(num, 0x10000)      // Lo-Word

        FOR i=0 TO num_dir-1
                file$[i]=file$[i]+"/"
        NEXT
        DIMDEL file$[],0;DIMDEL file$[],0//;DIMDEL file$[],0

        pos=0
        REPEAT
                t$=file$[pos]
                IF RIGHT$(t$,1)="/"
                        ok=SETCURRENTDIR(path$+t$)
                        cur$ = GETCURRENTDIR$()
                        num = GETFILELIST("*.*", temp$[])
                        num_dir  = INTEGER(num / 0x10000) // Hi-Word
                        num_file = MOD(num, 0x10000)      // Lo-Word
                        FOR i=0 TO num_dir-1;temp$[i]=temp$[i]+"/";NEXT
                        DIMDEL temp$[],0;DIMDEL temp$[],0//;DIMDEL file$[],0
                        FOREACH tt$ IN temp$[]
                                IF RIGHT$(tt$,1)="/" THEN DIMPUSH file$[],t$+tt$
                                IF UCASE$(RIGHT$(tt$,4))=".JPG" THEN DIMPUSH file$[],t$+tt$
                                IF UCASE$(RIGHT$(tt$,4))=".PNG" THEN DIMPUSH file$[],t$+tt$
                        NEXT
                ENDIF
                INC pos        
        UNTIL pos=BOUNDS(file$[],0) OR MOUSEAXIS(3)=1

        FOREACH t$ IN file$[]
           debug t$+"\n"
        NEXT
 
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE