procedureGetSubDirs(const
sRootDir: string
; slt: TStrings); var
srSearch: TSearchRec; sSearchPath: string
; sltSub: TStrings; i: Integer; begin
sltSub := TStringList.Create; slt.BeginUpdate; try
sSearchPath := AddDirSeparator(sRootDir); if
FindFirst(sSearchPath + '*', faDirectory, srSearch) = 0 then
repeat
if
((srSearch.Attr and
faDirectory) = faDirectory) and
(srSearch.Name <> '.') and
(srSearch.Name <> '..') then
begin
slt.Add(sSearchPath + srSearch.Name); sltSub.Add(sSearchPath + srSearch.Name); end
; until
(FindNext(srSearch) <> 0); FindClose(srSearch); for
i := 0 to
sltSub.Count - 1 do
GetSubDirs(sltSub.Strings[i], slt); finally
slt.EndUpdate; FreeAndNil(sltSub); end
; end
;