diff --git a/lcl/fileutil.pas b/lcl/fileutil.pas index 662d240e4e..da1c17c7ad 100644 --- a/lcl/fileutil.pas +++ b/lcl/fileutil.pas @@ -170,6 +170,7 @@ type function FindAllFiles(const SearchPath: String; SearchMask: String = ''; SearchSubDirs: Boolean = True): TStringList; +function FindAllDirectories(const SearchPath : string): TStringList; // file actions function ReadFileToString(const Filename: string): string; diff --git a/lcl/include/fileutil.inc b/lcl/include/fileutil.inc index 6f73a64e22..169028937b 100644 --- a/lcl/include/fileutil.inc +++ b/lcl/include/fileutil.inc @@ -1304,6 +1304,42 @@ begin end; end; +type + + { TListDirectoriesSearcher } + + TListDirectoriesSearcher = class(TFileSearcher) + private + FDirectoriesList :TStrings; + protected + procedure DoDirectoryFound; override; + public + constructor Create(AList: TStrings); + end; + +constructor TListDirectoriesSearcher.Create(AList: TStrings); +begin + FDirectoriesList := AList; +end; + +procedure TListDirectoriesSearcher.DoDirectoryFound; +begin + FDirectoriesList.Add(FileName); +end; + +function FindAllDirectories(const SearchPath : string): TStringList; +var + Searcher :TFileSearcher; +begin + Result := TStringList.Create; + Searcher := TListDirectoriesSearcher.Create(Result); + try + Searcher.Search(SearchPath, AllFilesMask, False); + finally + Searcher.Free; + end; +end; + { TFileIterator } function TFileIterator.GetFileName: String;