2019-01-12 17:05:16 +00:00
|
|
|
|
unit uPackageList;
|
|
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
uses
|
2019-01-12 20:24:13 +00:00
|
|
|
|
Classes, SysUtils, uFileUtils, uPackage;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
|
|
|
|
|
type
|
2019-01-12 20:24:13 +00:00
|
|
|
|
|
2019-01-12 17:05:16 +00:00
|
|
|
|
{ TPackageList }
|
|
|
|
|
|
2019-01-12 20:24:13 +00:00
|
|
|
|
// Класс списка пакетов
|
|
|
|
|
TPackageList = class
|
|
|
|
|
private
|
|
|
|
|
// Тип списка пакетов
|
|
|
|
|
FType: TPackageType;
|
|
|
|
|
// Список пакетов
|
|
|
|
|
FPackages: array of TPackage;
|
|
|
|
|
// Получение пакета из списка по его номеру
|
|
|
|
|
function GetPackageByIndex(Index: integer): TPackage;
|
|
|
|
|
public
|
|
|
|
|
// Тип списка пакетов
|
|
|
|
|
property PackageType: TPackageType read FType;
|
|
|
|
|
// Список пакетов
|
|
|
|
|
property Packages[Index: Integer]: TPackage read GetPackageByIndex; default;
|
2019-01-12 17:05:16 +00:00
|
|
|
|
|
2019-01-12 20:24:13 +00:00
|
|
|
|
// Создание списка пакетов по указанному типу
|
|
|
|
|
procedure Load(APackageType: TPackageType);
|
|
|
|
|
// Заполнение списка пакетов объектами пакетов
|
|
|
|
|
procedure Reload();
|
|
|
|
|
// Получение количества пакетов в списке
|
|
|
|
|
function Count(): integer;
|
|
|
|
|
end; // TPackageList
|
2019-01-12 17:05:16 +00:00
|
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
2019-01-12 20:24:13 +00:00
|
|
|
|
{ TPackageList }
|
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Процедура: TPackageList.Create()
|
|
|
|
|
Назначение: Создание списка пакетов по указанному типу
|
|
|
|
|
Вх. параметры: APackageType: TPackageType - тип списка пакета
|
|
|
|
|
------------------------------------------------------------------------------}
|
|
|
|
|
procedure TPackageList.Load(APackageType: TPackageType);
|
|
|
|
|
begin
|
|
|
|
|
FType := APackageType;
|
|
|
|
|
Reload();
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Процедура: TPackageList.Reload()
|
|
|
|
|
Назначение: Заполнение списка пакетов объектами пакетов
|
|
|
|
|
------------------------------------------------------------------------------}
|
|
|
|
|
procedure TPackageList.Reload();
|
|
|
|
|
var
|
|
|
|
|
FileList: TStringList;
|
|
|
|
|
FileMask: String;
|
|
|
|
|
Key: Integer;
|
|
|
|
|
begin
|
|
|
|
|
FPackages := nil;
|
|
|
|
|
case (FType) of
|
|
|
|
|
ptSoft: FileMask := 'soft.*.ini';
|
|
|
|
|
ptTools: FileMask := 'tools.*.ini';
|
|
|
|
|
ptUnknown: raise Exception.Create('TPackageList.Reload(): тип не может быть ptUnknown');
|
|
|
|
|
end;
|
|
|
|
|
FileList := GetABToolFileList('Packages', FileMask);
|
|
|
|
|
for Key := 0 to FileList.Count - 1 do
|
|
|
|
|
begin
|
|
|
|
|
SetLength(FPackages, Length(FPackages)+1);
|
|
|
|
|
FPackages[Key] := TPackage.Create(FileList[Key]);
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Функция: TPackage.GetPackageByIndex()
|
|
|
|
|
Назначение: Получение пакета из списка по его номеру
|
|
|
|
|
Возвращает: TPackage - пакет
|
|
|
|
|
------------------------------------------------------------------------------}
|
|
|
|
|
function TPackageList.GetPackageByIndex(Index: integer): TPackage;
|
|
|
|
|
begin
|
|
|
|
|
Result := FPackages[Index];
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
{------------------------------------------------------------------------------
|
|
|
|
|
Функция: TPackage.GetPackageByIndex()
|
|
|
|
|
Назначение: Получение количества пакетов в списке
|
|
|
|
|
Возвращает: integer - число пакетов в списке
|
|
|
|
|
------------------------------------------------------------------------------}
|
|
|
|
|
function TPackageList.Count(): integer;
|
|
|
|
|
begin
|
|
|
|
|
Result := Length(FPackages);
|
|
|
|
|
end;
|
|
|
|
|
|
2019-01-12 17:05:16 +00:00
|
|
|
|
end.
|
|
|
|
|
|