2019-01-12 17:05:16 +00:00
|
|
|
|
unit uFileUtils;
|
|
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
uses
|
2019-01-25 17:37:22 +00:00
|
|
|
|
Classes, SysUtils, FileUtil, uPackage;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
|
2019-01-12 20:24:13 +00:00
|
|
|
|
// Получение списка файлов в директории
|
2019-01-25 17:37:22 +00:00
|
|
|
|
function GetFileList(APath, AFileMask: String; AFullPaths: Boolean = True): TStringList;
|
2019-01-12 20:24:13 +00:00
|
|
|
|
|
2019-01-25 17:37:22 +00:00
|
|
|
|
// Получение списка всех файлов внутри директории ABTool
|
|
|
|
|
function GetABToolFileList(ASubDir, AFileMask: String; AFullPaths: Boolean = True): TStringList;
|
2019-01-12 20:24:13 +00:00
|
|
|
|
|
|
|
|
|
// Получение списка всех файлов пакетов
|
2019-01-25 17:37:22 +00:00
|
|
|
|
function GetPackagesIniFileList(APackageType: TPackageType; AFullPaths: Boolean = True): TStringList;
|
|
|
|
|
|
|
|
|
|
// Получение списка всех файлов локализаций
|
|
|
|
|
function GetLocalesIniFileList(AFullPaths: Boolean = True): TStringList;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Функция: GetFileList
|
2019-01-12 20:24:13 +00:00
|
|
|
|
Назначение: Получение списка файлов в директории
|
2019-01-12 17:05:16 +00:00
|
|
|
|
Вх. параметры:
|
2019-01-25 17:37:22 +00:00
|
|
|
|
APath: string - путь к директории, список файлов которой нужно получить
|
|
|
|
|
AFileMask: string - маска файлов, по которой нужно отфильтровать список файлов
|
|
|
|
|
AFullPaths: boolean - возвращать полные пути (true) или только имена
|
2019-01-12 17:05:16 +00:00
|
|
|
|
файлов (false). По умолчанию true.
|
|
|
|
|
Возвращает:
|
|
|
|
|
TStringList - список строк с полными путями или только с именами файлов
|
|
|
|
|
------------------------------------------------------------------------------}
|
2019-01-25 17:37:22 +00:00
|
|
|
|
function GetFileList(APath, AFileMask: String; AFullPaths: Boolean = True): TStringList;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
var
|
|
|
|
|
SearchRec: TSearchRec;
|
|
|
|
|
ResultLines: TStringList;
|
|
|
|
|
begin
|
|
|
|
|
ResultLines := TStringList.Create;
|
2019-01-25 17:37:22 +00:00
|
|
|
|
APath := IncludeTrailingPathDelimiter(APath);
|
|
|
|
|
if FindFirst(APath + AFileMask, faNormal, SearchRec) = 0 then
|
2019-01-12 17:05:16 +00:00
|
|
|
|
begin
|
|
|
|
|
repeat
|
|
|
|
|
if (SearchRec.Attr <> faDirectory) then
|
|
|
|
|
begin
|
2019-01-25 17:37:22 +00:00
|
|
|
|
if AFullPaths then
|
|
|
|
|
ResultLines.Add(APath + SearchRec.Name)
|
2019-01-12 17:05:16 +00:00
|
|
|
|
else
|
|
|
|
|
ResultLines.Add(SearchRec.Name);
|
|
|
|
|
end;
|
|
|
|
|
until FindNext(SearchRec) <> 0;
|
|
|
|
|
FindClose(SearchRec);
|
|
|
|
|
end;
|
|
|
|
|
Result := ResultLines;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Функция: GetABToolFileList
|
2019-01-12 20:24:13 +00:00
|
|
|
|
Назначение: Получение списка всех файлов внутри директории ABTool\
|
2019-01-12 17:05:16 +00:00
|
|
|
|
Вх. параметры:
|
2019-01-25 17:37:22 +00:00
|
|
|
|
ASubDir: string - имя директории внутри ABTool\
|
|
|
|
|
AFileMask: string - маска файлов, по которой нужно отфильтровать список файлов
|
|
|
|
|
AFullPaths: boolean - возвращать полные пути (true) или только имена
|
2019-01-12 17:05:16 +00:00
|
|
|
|
файлов (false). По умолчанию true.
|
|
|
|
|
Возвращает:
|
|
|
|
|
TStringList - список строк с полными путями или только с именами файлов пакетов
|
|
|
|
|
------------------------------------------------------------------------------}
|
2019-01-25 17:37:22 +00:00
|
|
|
|
function GetABToolFileList(ASubDir, AFileMask: String; AFullPaths: Boolean = True): TStringList;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
begin
|
2019-01-25 17:37:22 +00:00
|
|
|
|
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' + ASubDir, AFileMask, AFullPaths);
|
2019-01-12 17:05:16 +00:00
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Функция: GetPackagesIniFileList
|
2019-01-25 17:37:22 +00:00
|
|
|
|
Назначение: Получение списка всех файлов пакетов
|
2019-01-12 17:05:16 +00:00
|
|
|
|
Вх. параметры:
|
2019-01-25 17:37:22 +00:00
|
|
|
|
APackageType: TPackageType - тип пакета: ptSoft либо ptTools
|
|
|
|
|
AFullPaths: boolean - возвращать полные пути (true) или только имена
|
2019-01-12 17:05:16 +00:00
|
|
|
|
файлов (false). По умолчанию true.
|
|
|
|
|
Возвращает:
|
|
|
|
|
TStringList - список строк с полными путями или только с именами файлов пакетов
|
|
|
|
|
Исключения:
|
2019-01-25 17:37:22 +00:00
|
|
|
|
TException - при попытке передать любой другой тип пакета
|
2019-01-12 17:05:16 +00:00
|
|
|
|
------------------------------------------------------------------------------}
|
2019-01-25 17:37:22 +00:00
|
|
|
|
function GetPackagesIniFileList(APackageType: TPackageType; AFullPaths: Boolean = True): TStringList;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
begin
|
2019-01-25 17:37:22 +00:00
|
|
|
|
case (APackageType) of
|
|
|
|
|
ptSoft: Result := GetABToolFileList('Packages', 'soft.*.ini', AFullPaths);
|
|
|
|
|
ptTools: Result := GetABToolFileList('Packages', 'tools.*.ini', AFullPaths);
|
|
|
|
|
else raise Exception.Create('GetPackagesIniFileList(): передан неверный тип пакета');
|
2019-01-12 17:05:16 +00:00
|
|
|
|
end;
|
|
|
|
|
end;
|
2019-01-25 17:37:22 +00:00
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Функция: GetPackagesIniFileList
|
|
|
|
|
Назначение: Получение списка всех файлов локализаций
|
|
|
|
|
Вх. параметры:
|
|
|
|
|
AFullPaths: boolean - возвращать полные пути (true) или только имена
|
|
|
|
|
файлов (false). По умолчанию true.
|
|
|
|
|
Возвращает:
|
|
|
|
|
TStringList - список строк с полными путями или только с именами файлов пакетов
|
|
|
|
|
Исключения:
|
|
|
|
|
TException - при попытке передать ptUnknown
|
|
|
|
|
------------------------------------------------------------------------------}
|
|
|
|
|
function GetLocalesIniFileList(AFullPaths: Boolean = True): TStringList;
|
|
|
|
|
begin
|
|
|
|
|
Result := GetABToolFileList('Languages', '*.lng', AFullPaths);
|
|
|
|
|
end;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
|
|
|
|
|
end.
|