unit uFileUtils; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Types, uPackage; // Получение списка файлов в директории function GetFileList(Path, FileMask: String; FullPaths: Boolean = True): TStringList; // Получение списка всех файлов внутри директории ABTool\ function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList; // Получение списка всех файлов пакетов function GetPackagesIniFileList(PackageType: TPackageType; FullPaths: Boolean = True): TStringList; implementation {------------------------------------------------------------------------------ Функция: GetFileList Назначение: Получение списка файлов в директории Вх. параметры: Path: string - путь к директории, список файлов которой нужно получить FileMask: string - маска файлов, по которой нужно отфильтровать список файлов FullPaths: boolean - возвращать полные пути (true) или только имена файлов (false). По умолчанию true. Возвращает: TStringList - список строк с полными путями или только с именами файлов ------------------------------------------------------------------------------} function GetFileList(Path, FileMask: String; FullPaths: Boolean = True): TStringList; var SearchRec: TSearchRec; ResultLines: TStringList; begin ResultLines := TStringList.Create; Path := IncludeTrailingPathDelimiter(Path); if FindFirst(Path + FileMask, faNormal, SearchRec) = 0 then begin repeat if (SearchRec.Attr <> faDirectory) then begin if FullPaths then ResultLines.Add(Path + SearchRec.Name) else ResultLines.Add(SearchRec.Name); end; until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; Result := ResultLines; end; {------------------------------------------------------------------------------ Функция: GetABToolFileList Назначение: Получение списка всех файлов внутри директории ABTool\ Вх. параметры: SubDir: string - имя директории внутри ABTool\ FileMask: string - маска файлов, по которой нужно отфильтровать список файлов FullPaths: boolean - возвращать полные пути (true) или только имена файлов (false). По умолчанию true. Возвращает: TStringList - список строк с полными путями или только с именами файлов пакетов ------------------------------------------------------------------------------} function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList; begin Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' + SubDir, FileMask, FullPaths); end; {------------------------------------------------------------------------------ Функция: GetPackagesIniFileList Назначение: Получение спискавсех файлов пакетов Вх. параметры: PackageType: TPackageType - тип пакета: ptSoft либо ptTools FullPaths: boolean - возвращать полные пути (true) или только имена файлов (false). По умолчанию true. Возвращает: TStringList - список строк с полными путями или только с именами файлов пакетов Исключения: TException - при попытке передать ptUnknown ------------------------------------------------------------------------------} function GetPackagesIniFileList(PackageType: TPackageType; FullPaths: Boolean = True): TStringList; begin case (PackageType) of ptSoft: Result := GetABToolFileList('Packages', 'soft.*.ini', FullPaths); ptTools: Result := GetABToolFileList('Packages', 'tools.*.ini', FullPaths); ptUnknown: raise Exception.Create('GetPackagesIniFileList(): передан ptUnknown'); end; end; end.