abtool/ufileutils.pas

93 lines
4.3 KiB
Plaintext
Raw Normal View History

2019-01-12 17:05:16 +00:00
unit uFileUtils;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Types, uPackage;
// Получение списка файлов в директории
2019-01-12 17:05:16 +00:00
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;
2019-01-12 17:05:16 +00:00
implementation
{------------------------------------------------------------------------------
Функция: GetFileList
Назначение: Получение списка файлов в директории
2019-01-12 17:05:16 +00:00
Вх. параметры:
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\
2019-01-12 17:05:16 +00:00
Вх. параметры:
SubDir: string - имя директории внутри ABTool\
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
FullPaths: boolean - возвращать полные пути (true) или только имена
файлов (false). По умолчанию true.
Возвращает:
TStringList - список строк с полными путями или только с именами файлов пакетов
------------------------------------------------------------------------------}
function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList;
2019-01-12 17:05:16 +00:00
begin
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' + SubDir, FileMask, FullPaths);
2019-01-12 17:05:16 +00:00
end;
{------------------------------------------------------------------------------
Функция: GetPackagesIniFileList
Назначение: Получение спискавсех файлов пакетов
2019-01-12 17:05:16 +00:00
Вх. параметры:
PackageType: TPackageType - тип пакета: ptSoft либо ptTools
FullPaths: boolean - возвращать полные пути (true) или только имена
файлов (false). По умолчанию true.
Возвращает:
TStringList - список строк с полными путями или только с именами файлов пакетов
Исключения:
TException - при попытке передать ptUnknown
------------------------------------------------------------------------------}
function GetPackagesIniFileList(PackageType: TPackageType; FullPaths: Boolean = True): TStringList;
2019-01-12 17:05:16 +00:00
begin
case (PackageType) of
ptSoft: Result := GetABToolFileList('Packages', 'soft.*.ini', FullPaths);
ptTools: Result := GetABToolFileList('Packages', 'tools.*.ini', FullPaths);
ptUnknown: raise Exception.Create('GetPackagesIniFileList(): передан ptUnknown');
2019-01-12 17:05:16 +00:00
end;
end;
end.