>SubFolders(@m.QueueObj, CURDIR(), '*\Images\I*') >>
>>FUNCTION RecursiveDirectoryList >>* Gregory Adam >> >>#define TRUE .t. >>#define FALSE .f. >>*------------------------------------------------------------------------------- >>local QueueObj, SubfolderName >> >> >>if( SubFolders(@m.QueueObj, CURDIR(), '*reports\_*') ) >> >> do while m.QueueObj.DeQueue(@m.SubfolderName) >> ?SubfolderName >> enddo >>endif >>*------------------------------------------------------------------------------- >>function SubFolders(QueueObj, FolderName, FileSkeletonExclude) >> >> local Success >> Success = TRUE >> >> local StackObj, ColObj, SubfolderName >> StackObj = createObject('Stack') >> QueueObj = createobject('Queue') >> ColObj = createObject('Queue') >> >> local fsObj >> fsObj = createobject('Scripting.FileSystemObject') >> >> do case >> case !m.Success >> >> otherwise >> try >> objSubFolders = m.fsObj.GetFolder(m.FolderName).SubFolders >> >> catch >> assert FALSE >> Success = FALSE >> >> endtry >> >> endcase >> >> >> do case >> case !m.Success >> >> otherwise >> for each Subfolder in m.objSubFolders >> =m.ColObj.EnQueue(m.Subfolder.Path) >> endfor >> >> endcase >> >> do while m.Success ; >> and m.StackObj.AppendFrom(m.ColObj, TRUE) ; >> and m.ColObj.Clear() ; >> and m.StackObj.Pop(@m.SubfolderName) >> >> if( !empty(m.FileSkeletonExclude) and like(m.FileSkeletonExclude, m.SubfolderName) ) >> loop >> endif >> >> =m.QueueObj.EnQueue(m.SubfolderName) >> >> objSubFolders = m.fsObj.GetFolder(m.SubfolderName).SubFolders >> >> for each Subfolder in m.objSubFolders >> =m.ColObj.EnQueue(m.Subfolder.Path) >> endfor >> >> >> enddo >> >> >> return m.Success >> >>endfunc >>*------------------------------------------------------------------------------- >>*------------------------------------------------------------------------------- >>*=============================================================================== >>*=============================================================================== >>*=============================================================================== >>define class Stack as CollectionBase >> >>*------------------------------------------------------------------------------- >>function Push(v) >> =m.this.Add(m.v) >>endfunc >>*------------------------------------------------------------------------------- >>function Pop(v) >> >> if( empty(m.this.Count) ) >> return FALSE >> endif >> v = m.this.Item(m.this.Count) >> =m.this.Remove(m.this.Count) >> >>endfunc >>*------------------------------------------------------------------------------- >>function Peek(v) >> >> if( empty(m.this.Count) ) >> return FALSE >> endif >> v = m.this.Item(m.this.Count) >> >>endfunc >>*------------------------------------------------------------------------------- >>*------------------------------------------------------------------------------- >>enddefine >>*=============================================================================== >>*=============================================================================== >>*=============================================================================== >> >> >>*=============================================================================== >>*=============================================================================== >>*=============================================================================== >>define class Queue as CollectionBase >> >>*------------------------------------------------------------------------------- >>function EnQueue(v) >> =m.this.Add(m.v) >>endfunc >>*------------------------------------------------------------------------------- >>function DeQueue(v) >> >> if( empty(m.this.Count) ) >> return FALSE >> endif >> v = m.this.Item(1) >> =m.this.Remove(1) >> >>endfunc >>*------------------------------------------------------------------------------- >>function Peek(v) >> >> if( empty(m.this.Count) ) >> return FALSE >> endif >> v = m.this.Item(1) >> >>endfunc >>*------------------------------------------------------------------------------- >>enddefine >>*=============================================================================== >>*=============================================================================== >>*=============================================================================== >> >>*=============================================================================== >>*=============================================================================== >>*=============================================================================== >>define class CollectionBase as Collection >> >>*------------------------------------------------------------------------------- >>function Clear() >> >> =m.this.Remove(-1) >> >>endfunc >>*------------------------------------------------------------------------------- >>function Empty() >> >> return empty(m.this.Count) >> >>endfunc >>*------------------------------------------------------------------------------- >>function AppendFrom(ColObj, Reversed) >> >> local i >> >> do case >> case !m.Reversed >> for i = 1 to m.ColObj.Count >> =m.this.Add(m.ColObj.Item[m.i]) >> endfor >> >> otherwise >> for i = m.ColObj.Count to 1 step -1 >> =m.this.Add(m.ColObj.Item[m.i]) >> endfor >> >> >> endcase >> >> >>endfunc >>*------------------------------------------------------------------------------- >>enddefine >>>>