lps-файл удалён и добавлен в gitignore. Почти готов механизм подгрузки списков пакетов на старте
This commit is contained in:
parent
1f20268830
commit
63823b8e6e
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@
|
||||
*.ppu
|
||||
*.obj
|
||||
*.o
|
||||
*.lps
|
||||
|
@ -91,7 +91,7 @@
|
||||
<Unit2>
|
||||
<Filename Value="dmain.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="MainDM"/>
|
||||
<ComponentName Value="dmMain"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="DataModule"/>
|
||||
<UnitName Value="dMain"/>
|
||||
|
34
ABTool.lpr
34
ABTool.lpr
@ -16,42 +16,10 @@ uses {$IFDEF UNIX} {$IFDEF UseCThreads}
|
||||
|
||||
{$R *.res}
|
||||
|
||||
var
|
||||
// путь к файлу ABTool.exe
|
||||
ABToolExePath: String;
|
||||
|
||||
// путь к директории ABTool
|
||||
ABToolDataPath: String;
|
||||
|
||||
// путь к директории ABTool\Packages
|
||||
ABToolPkgPath: String;
|
||||
|
||||
// путь к директории ABTool\Languages
|
||||
ABToolLangPath: String;
|
||||
|
||||
// путь к директории ABTool\Logs
|
||||
ABToolLogPath: String;
|
||||
|
||||
begin
|
||||
RequireDerivedFormResource := True;
|
||||
Application.Initialize;
|
||||
|
||||
// настройка путей к директориям
|
||||
ABToolExePath := ExtractFilePath(ParamStr(0));
|
||||
ABToolDataPath := ABToolExePath + 'ABTool\';
|
||||
ABToolPkgPath := ABToolDataPath + 'Packages\';
|
||||
ABToolLangPath := ABToolDataPath + 'Languages\';
|
||||
ABToolLogPath := ABToolDataPath + 'Logs\';
|
||||
|
||||
// подготовка директорий
|
||||
if not DirectoryExists(ABToolPkgPath) then
|
||||
ForceDirectories(ABToolPkgPath);
|
||||
if not DirectoryExists(ABToolLangPath) then
|
||||
ForceDirectories(ABToolLangPath);
|
||||
if not DirectoryExists(ABToolLogPath) then
|
||||
ForceDirectories(ABToolLogPath);
|
||||
|
||||
Application.CreateForm(TMainDM, MainDM);
|
||||
Application.CreateForm(TdmMain, dmMain);
|
||||
Application.CreateForm(TfmMain, fMain.fmMain);
|
||||
Application.Run;
|
||||
end.
|
||||
|
239
ABTool.lps
239
ABTool.lps
@ -1,239 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectSession>
|
||||
<PathDelim Value="\"/>
|
||||
<Version Value="10"/>
|
||||
<BuildModes Active="Debug"/>
|
||||
<Units Count="10">
|
||||
<Unit0>
|
||||
<Filename Value="ABTool.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<TopLine Value="34"/>
|
||||
<CursorPos X="66" Y="56"/>
|
||||
<UsageCount Value="66"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="fmain.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fmMain"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fMain"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<TopLine Value="44"/>
|
||||
<CursorPos X="26" Y="56"/>
|
||||
<UsageCount Value="66"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="dmain.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="MainDM"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="DataModule"/>
|
||||
<UnitName Value="dMain"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<CursorPos X="50" Y="36"/>
|
||||
<ComponentState Value="1"/>
|
||||
<UsageCount Value="66"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uFileUtils"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<TopLine Value="13"/>
|
||||
<CursorPos X="29" Y="5"/>
|
||||
<UsageCount Value="43"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="upackage.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uPackage"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<TopLine Value="7"/>
|
||||
<CursorPos X="3" Y="12"/>
|
||||
<UsageCount Value="35"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="upackageutils.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uPackageUtils"/>
|
||||
<EditorIndex Value="6"/>
|
||||
<CursorPos X="38"/>
|
||||
<UsageCount Value="30"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="upackagelist.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uPackageList"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<CursorPos X="28"/>
|
||||
<UsageCount Value="28"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="C:\Lazarus\lcl\include\custompage.inc"/>
|
||||
<EditorIndex Value="-1"/>
|
||||
<TopLine Value="253"/>
|
||||
<CursorPos Y="266"/>
|
||||
<UsageCount Value="5"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="upackagetypes.pas"/>
|
||||
<UnitName Value="uPackageTypes"/>
|
||||
<EditorIndex Value="-1"/>
|
||||
<CursorPos Y="9"/>
|
||||
<UsageCount Value="20"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="C:\Lazarus\lcl\interfaces\win32\win32listsl.inc"/>
|
||||
<EditorIndex Value="-1"/>
|
||||
<TopLine Value="114"/>
|
||||
<CursorPos X="28" Y="121"/>
|
||||
<UsageCount Value="9"/>
|
||||
</Unit9>
|
||||
</Units>
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="fmain.pas"/>
|
||||
<Caret Line="61" TopLine="44"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="57" TopLine="43"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="31" TopLine="19"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="32" Column="33" TopLine="19"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="37" TopLine="19"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="40" TopLine="20"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="42" TopLine="22"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="35" TopLine="22"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="fmain.pas"/>
|
||||
<Caret Line="58" Column="72" TopLine="40"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="84" Column="59" TopLine="66"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="80" TopLine="60"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="61" TopLine="57"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="62" TopLine="57"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="31" TopLine="15"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="27" Column="55" TopLine="15"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="33" Column="27" TopLine="25"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="80" TopLine="68"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="61" TopLine="49"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="62" TopLine="49"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="31" TopLine="19"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="32" TopLine="19"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="33" TopLine="19"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="38" Column="53" TopLine="25"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="81" TopLine="69"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="62" TopLine="50"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="63" TopLine="50"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="31" TopLine="19"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="32" TopLine="19"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="ufileutils.pas"/>
|
||||
<Caret Line="33" TopLine="19"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="fmain.pas"/>
|
||||
<Caret Line="10" Column="15" TopLine="5"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectSession>
|
||||
<Debugging>
|
||||
<BreakPoints Count="1">
|
||||
<Item1>
|
||||
<Kind Value="bpkSource"/>
|
||||
<WatchScope Value="wpsLocal"/>
|
||||
<WatchKind Value="wpkWrite"/>
|
||||
<Source Value="mainform.pas"/>
|
||||
<Line Value="57"/>
|
||||
</Item1>
|
||||
</BreakPoints>
|
||||
</Debugging>
|
||||
</CONFIG>
|
@ -1,37 +0,0 @@
|
||||
;
|
||||
; ABTool v0.6.4
|
||||
; Конфигурация пакетов программ для установки
|
||||
;
|
||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
||||
;
|
||||
; Name — Название пакета.
|
||||
;
|
||||
; Description — Краткое описание пакета. Здесь вы
|
||||
; можете указать для чего этот пакет собран, в каких
|
||||
; случаях его использовать и т.д. Только для вашего
|
||||
; удобства и по вашему усмотрению.
|
||||
; Не должно быть разрывов строк.
|
||||
;
|
||||
; Добавление программ в пакет
|
||||
;
|
||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
||||
; "Название программы"=\"путь к файлу".
|
||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
||||
; или с \\ (если путь относителен ABTool.exe).
|
||||
; Нельзя под один чекбокс указывать несколько команд.
|
||||
; Можно указывать дополнительные ключи запуска.
|
||||
;
|
||||
;============================================================================
|
||||
[PackageInfo]
|
||||
Name=Пакет по умолчанию
|
||||
Description=Пакет программ, используемый по умолчанию
|
||||
[Группа 1]
|
||||
Имя1=\\setup1.exe /ключ1 /ключ2
|
||||
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
|
||||
Имя3=\папка_в_корне_диска\setup3.exe
|
||||
[Группа 2]
|
||||
Имя4=\\setup4.exe /ключ1
|
||||
[Группа 3]
|
||||
Имя5=\\setup5.exe
|
||||
Имя6=\\setup6.exe /ключ1
|
@ -1,37 +0,0 @@
|
||||
;
|
||||
; ABTool v0.6.4
|
||||
; Конфигурация пакетов программ для установки
|
||||
;
|
||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
||||
;
|
||||
; Name — Название пакета.
|
||||
;
|
||||
; Description — Краткое описание пакета. Здесь вы
|
||||
; можете указать для чего этот пакет собран, в каких
|
||||
; случаях его использовать и т.д. Только для вашего
|
||||
; удобства и по вашему усмотрению.
|
||||
; Не должно быть разрывов строк.
|
||||
;
|
||||
; Добавление программ в пакет
|
||||
;
|
||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
||||
; "Название программы"=\"путь к файлу".
|
||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
||||
; или с \\ (если путь относителен ABTool.exe).
|
||||
; Нельзя под один чекбокс указывать несколько команд.
|
||||
; Можно указывать дополнительные ключи запуска.
|
||||
;
|
||||
;============================================================================
|
||||
[PackageInfo]
|
||||
Name=Пакет по умолчанию
|
||||
Description=Пакет программ, используемый по умолчанию
|
||||
[Группа 1]
|
||||
Имя1=\\setup1.exe /ключ1 /ключ2
|
||||
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
|
||||
Имя3=\папка_в_корне_диска\setup3.exe
|
||||
[Группа 2]
|
||||
Имя4=\\setup4.exe /ключ1
|
||||
[Группа 3]
|
||||
Имя5=\\setup5.exe
|
||||
Имя6=\\setup6.exe /ключ1
|
@ -1,42 +0,0 @@
|
||||
;
|
||||
; ABTool v0.6.4
|
||||
; Конфигурация пакетов утилит для запуска
|
||||
;
|
||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
||||
;
|
||||
; Name — Название пакета.
|
||||
;
|
||||
; Description — Краткое описание пакета. Здесь вы
|
||||
; можете указать для чего этот пакет собран, в каких
|
||||
; случаях его использовать и т.д. Только для вашего
|
||||
; удобства и по вашему усмотрению.
|
||||
; Не должно быть разрывов строк.
|
||||
;
|
||||
; Добавление утилит в пакет
|
||||
;
|
||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
||||
; "Название утилиты"="путь к файлу".
|
||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
||||
; или с \\ (если путь относителен ABTool.exe).
|
||||
; Нельзя под один пункт указывать несколько команд.
|
||||
; Можно указывать дополнительные ключи запуска.
|
||||
;
|
||||
;============================================================================
|
||||
[PackageInfo]
|
||||
Name=Пакет по умолчанию
|
||||
Description=Пакет программ, используемый по умолчанию
|
||||
[Группа 1]
|
||||
Утилита 1=\\утилита1.exe /ключ1 /ключ2
|
||||
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
|
||||
Утилита 3=\папка_в_корне_диска\утилита3.exe
|
||||
Утилита 4=\\утилита4.exe /ключ1
|
||||
[Группа 2]
|
||||
Утилита 5=\\утилита5.exe
|
||||
Утилита 6=\\утилита6.exe
|
||||
[Группа 3]
|
||||
Утилита 7=\\утилита7.exe /ключ1
|
||||
Утилита 8=\\утилита8.exe
|
||||
Утилита 9=\\утилита9.exe
|
||||
Утилита 10=\\утилита10.exe /ключ1 /ключ2
|
||||
Утилита 11=\\утилита11.exe
|
@ -1,42 +0,0 @@
|
||||
;
|
||||
; ABTool v0.6.4
|
||||
; Конфигурация пакетов утилит для запуска
|
||||
;
|
||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
||||
;
|
||||
; Name — Название пакета.
|
||||
;
|
||||
; Description — Краткое описание пакета. Здесь вы
|
||||
; можете указать для чего этот пакет собран, в каких
|
||||
; случаях его использовать и т.д. Только для вашего
|
||||
; удобства и по вашему усмотрению.
|
||||
; Не должно быть разрывов строк.
|
||||
;
|
||||
; Добавление утилит в пакет
|
||||
;
|
||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
||||
; "Название утилиты"="путь к файлу".
|
||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
||||
; или с \\ (если путь относителен ABTool.exe).
|
||||
; Нельзя под один пункт указывать несколько команд.
|
||||
; Можно указывать дополнительные ключи запуска.
|
||||
;
|
||||
;============================================================================
|
||||
[PackageInfo]
|
||||
Name=Пакет по умолчанию
|
||||
Description=Пакет программ, используемый по умолчанию
|
||||
[Группа 1]
|
||||
Утилита 1=\\утилита1.exe /ключ1 /ключ2
|
||||
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
|
||||
Утилита 3=\папка_в_корне_диска\утилита3.exe
|
||||
Утилита 4=\\утилита4.exe /ключ1
|
||||
[Группа 2]
|
||||
Утилита 5=\\утилита5.exe
|
||||
Утилита 6=\\утилита6.exe
|
||||
[Группа 3]
|
||||
Утилита 7=\\утилита7.exe /ключ1
|
||||
Утилита 8=\\утилита8.exe
|
||||
Утилита 9=\\утилита9.exe
|
||||
Утилита 10=\\утилита10.exe /ключ1 /ключ2
|
||||
Утилита 11=\\утилита11.exe
|
@ -1,4 +1,5 @@
|
||||
object MainDM: TMainDM
|
||||
object dmMain: TdmMain
|
||||
OnCreate = DataModuleCreate
|
||||
OldCreateOrder = False
|
||||
Height = 84
|
||||
HorizontalOffset = 313
|
||||
|
72
dmain.pas
72
dmain.pas
@ -5,13 +5,13 @@ unit dMain;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Controls, Menus;
|
||||
Classes, SysUtils, FileUtil, Controls, Menus, uPackage, uPackageList;
|
||||
|
||||
type
|
||||
|
||||
{ TMainDM }
|
||||
{ TdmMain }
|
||||
|
||||
TMainDM = class(TDataModule)
|
||||
TdmMain = class(TDataModule)
|
||||
imgIcons: TImageList;
|
||||
mmMain: TMainMenu;
|
||||
mbInstallCheckAll: TMenuItem;
|
||||
@ -34,21 +34,81 @@ type
|
||||
mbOptionsPkg: TMenuItem;
|
||||
pmInstallTree: TPopupMenu;
|
||||
pmInstallCheck: TPopupMenu;
|
||||
procedure DataModuleCreate(Sender: TObject);
|
||||
private
|
||||
|
||||
// Подготовка директорий
|
||||
procedure PrepareDirs();
|
||||
// Подготовка списков пакетов
|
||||
procedure PreparePackages();
|
||||
public
|
||||
{ Публичные переменные, которые доступны во всех юнитах с подключенным uses ..., dMain }
|
||||
|
||||
// путь к файлу ABTool.exe
|
||||
ABToolExePath: String;
|
||||
// путь к директории ABTool
|
||||
ABToolDataPath: String;
|
||||
// путь к директории ABTool\Packages
|
||||
ABToolPkgPath: String;
|
||||
// путь к директории ABTool\Languages
|
||||
ABToolLangPath: String;
|
||||
// путь к директории ABTool\Logs
|
||||
ABToolLogPath: String;
|
||||
// Список объектов пакетов программ для установки
|
||||
SoftPackages: TPackageList;
|
||||
// Список объектов пакетов утилит для запуска
|
||||
ToolsPackages: TPackageList;
|
||||
end;
|
||||
|
||||
var
|
||||
MainDM: TMainDM;
|
||||
dmMain: TdmMain;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TMainDM }
|
||||
{ TdmMain }
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Конструктор: TdmMain.Create()
|
||||
Назначение: Создание датамодуля, подготовка путей и списков пакетов
|
||||
Вх. параметры: Sender: TObject
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TdmMain.DataModuleCreate(Sender: TObject);
|
||||
begin
|
||||
PrepareDirs();
|
||||
PreparePackages();
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TdmMain.PreparePackages()
|
||||
Назначение: Подготовка директорий
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TdmMain.PrepareDirs();
|
||||
begin
|
||||
ABToolExePath := ExtractFilePath(ParamStr(0));
|
||||
ABToolDataPath := ABToolExePath + 'ABTool\';
|
||||
ABToolPkgPath := ABToolDataPath + 'Packages\';
|
||||
ABToolLangPath := ABToolDataPath + 'Languages\';
|
||||
ABToolLogPath := ABToolDataPath + 'Logs\';
|
||||
if not DirectoryExists(ABToolPkgPath) then
|
||||
ForceDirectories(ABToolPkgPath);
|
||||
if not DirectoryExists(ABToolLangPath) then
|
||||
ForceDirectories(ABToolLangPath);
|
||||
if not DirectoryExists(ABToolLogPath) then
|
||||
ForceDirectories(ABToolLogPath);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TdmMain.PreparePackages()
|
||||
Назначение: Подготовка списков пакетов
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TdmMain.PreparePackages();
|
||||
begin
|
||||
SoftPackages := TPackageList.Create;
|
||||
SoftPackages.Load(ptSoft);
|
||||
ToolsPackages := TPackageList.Create;
|
||||
ToolsPackages.Load(ptTools);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
35
fmain.lfm
35
fmain.lfm
@ -1,14 +1,14 @@
|
||||
object fmMain: TfmMain
|
||||
Left = 309
|
||||
Left = 304
|
||||
Height = 450
|
||||
Top = 88
|
||||
Top = 87
|
||||
Width = 350
|
||||
BorderStyle = bsSingle
|
||||
BorderIcons = [biSystemMenu, biMinimize]
|
||||
Caption = 'ABTool'
|
||||
ClientHeight = 430
|
||||
ClientWidth = 350
|
||||
Constraints.MaxHeight = 450
|
||||
Constraints.MaxWidth = 350
|
||||
Constraints.MaxHeight = 500
|
||||
Constraints.MaxWidth = 400
|
||||
Constraints.MinHeight = 450
|
||||
Constraints.MinWidth = 350
|
||||
Font.CharSet = RUSSIAN_CHARSET
|
||||
@ -3210,7 +3210,7 @@ object fmMain: TfmMain
|
||||
71FE000F5EFF000773FE000387FE800176FD80002DC38001693C0003D1190007
|
||||
36A3800F57F7800F8AFFC00F76FFC01F8BFFE03FBEFFF47FBDFF
|
||||
}
|
||||
Menu = MainDM.mmMain
|
||||
Menu = dmMain.mmMain
|
||||
OnCreate = FormCreate
|
||||
Position = poScreenCenter
|
||||
ShowHint = True
|
||||
@ -3220,11 +3220,11 @@ object fmMain: TfmMain
|
||||
Height = 430
|
||||
Top = 0
|
||||
Width = 350
|
||||
ActivePage = tabSoft
|
||||
ActivePage = tabTools
|
||||
Align = alClient
|
||||
Images = MainDM.imgIcons
|
||||
Images = dmMain.imgIcons
|
||||
TabHeight = 20
|
||||
TabIndex = 0
|
||||
TabIndex = 1
|
||||
TabOrder = 0
|
||||
object tabSoft: TTabSheet
|
||||
Caption = 'Установка'
|
||||
@ -3410,7 +3410,7 @@ object fmMain: TfmMain
|
||||
object edToolsSearch: TEdit
|
||||
Left = 0
|
||||
Height = 13
|
||||
Top = 28
|
||||
Top = 30
|
||||
Width = 342
|
||||
Align = alTop
|
||||
BorderSpacing.Top = 5
|
||||
@ -3421,13 +3421,13 @@ object fmMain: TfmMain
|
||||
end
|
||||
object pnToolsTop: TPanel
|
||||
Left = 0
|
||||
Height = 23
|
||||
Height = 25
|
||||
Top = 0
|
||||
Width = 342
|
||||
Align = alTop
|
||||
AutoSize = True
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 23
|
||||
ClientHeight = 25
|
||||
ClientWidth = 342
|
||||
TabOrder = 1
|
||||
object cmbToolsPkgSelect: TComboBox
|
||||
@ -3445,7 +3445,7 @@ object fmMain: TfmMain
|
||||
end
|
||||
object btnToolsPkgEdit: TSpeedButton
|
||||
Left = 316
|
||||
Height = 23
|
||||
Height = 25
|
||||
Hint = 'Редактировать пакет'
|
||||
Top = 0
|
||||
Width = 26
|
||||
@ -3491,7 +3491,7 @@ object fmMain: TfmMain
|
||||
end
|
||||
object btnToolsPkgReload: TSpeedButton
|
||||
Left = 290
|
||||
Height = 23
|
||||
Height = 25
|
||||
Hint = 'Перезагрузить пакет'
|
||||
Top = 0
|
||||
Width = 26
|
||||
@ -3532,6 +3532,7 @@ object fmMain: TfmMain
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = btnToolsPkgReloadClick
|
||||
end
|
||||
end
|
||||
object btnToolsRun: TButton
|
||||
@ -3552,7 +3553,7 @@ object fmMain: TfmMain
|
||||
object labToolsPkgDescription: TLabel
|
||||
Left = 0
|
||||
Height = 13
|
||||
Top = 46
|
||||
Top = 48
|
||||
Width = 342
|
||||
Align = alTop
|
||||
AutoSize = False
|
||||
@ -3563,8 +3564,8 @@ object fmMain: TfmMain
|
||||
end
|
||||
object vstToolsPkgContents: TVirtualStringTree
|
||||
Left = 0
|
||||
Height = 308
|
||||
Top = 62
|
||||
Height = 306
|
||||
Top = 64
|
||||
Width = 342
|
||||
Align = alClient
|
||||
BorderStyle = bsNone
|
||||
|
87
fmain.pas
87
fmain.pas
@ -7,7 +7,7 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
||||
StdCtrls, ExtCtrls, Buttons, ActnList, EditBtn, Menus, VirtualTrees, Types,
|
||||
uFileUtils, uPackage, uPackageUtils;
|
||||
dMain, uFileUtils, uPackage, uPackageUtils, uPackageList;
|
||||
|
||||
type
|
||||
|
||||
@ -35,10 +35,15 @@ type
|
||||
tabTools: TTabSheet;
|
||||
vstSoftPkgContents: TVirtualStringTree;
|
||||
vstToolsPkgContents: TVirtualStringTree;
|
||||
procedure btnSoftPkgReloadClick(Sender: TObject);
|
||||
// Создание формы и обновление выпадающих меню пакетов программ и утилит
|
||||
procedure FormCreate(Sender: TObject);
|
||||
// Обрабока клика по кнопке обновления выпадающего меню пакетов программ
|
||||
procedure btnSoftPkgReloadClick(Sender: TObject);
|
||||
// Обрабока клика по кнопке обновления выпадающего меню пакетов утилит
|
||||
procedure btnToolsPkgReloadClick(Sender: TObject);
|
||||
private
|
||||
procedure ReloadSoftPackagesList();
|
||||
// Перезагрузка списка пакетов и выпадающих меню пакетов по указанному типу
|
||||
procedure ReloadPackagesList(APackageType: TPackageType);
|
||||
public
|
||||
|
||||
end;
|
||||
@ -52,21 +57,77 @@ implementation
|
||||
|
||||
{ TfmMain }
|
||||
|
||||
procedure TfmMain.btnSoftPkgReloadClick(Sender: TObject);
|
||||
begin
|
||||
ReloadSoftPackagesList;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmMain.ReloadPackagesList()
|
||||
Назначение: Создание формы и обновление выпадающих меню пакетов программ и утилит
|
||||
Вх. параметры: Sender: TObject
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TfmMain.FormCreate(Sender: TObject);
|
||||
begin
|
||||
ReloadSoftPackagesList;
|
||||
ReloadPackagesList(ptSoft);
|
||||
ReloadPackagesList(ptTools);
|
||||
end;
|
||||
|
||||
|
||||
procedure TfmMain.ReloadSoftPackagesList();
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmMain.btnSoftPkgReloadClick()
|
||||
Назначение: Обрабока клика по кнопке обновления выпадающего меню пакетов программ
|
||||
Вх. параметры: Sender: TObject
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TfmMain.btnSoftPkgReloadClick(Sender: TObject);
|
||||
begin
|
||||
cmbSoftPkgSelect.Items.AddStrings(GetPackagesIniFileList(ptSoft, False), True);
|
||||
cmbSoftPkgSelect.ItemIndex := 0;
|
||||
ReloadPackagesList(ptSoft);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmMain.btnToolsPkgReloadClick()
|
||||
Назначение: Обрабока клика по кнопке обновления выпадающего меню пакетов утилит
|
||||
Вх. параметры: Sender: TObject
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TfmMain.btnToolsPkgReloadClick(Sender: TObject);
|
||||
begin
|
||||
ReloadPackagesList(ptTools);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmMain.ReloadPackagesList()
|
||||
Назначение: Перезагрузка списка пакетов и выпадающих меню пакетов по указанному типу
|
||||
Вх. параметры: APackageType: TPackageType - тип списка пакета
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TfmMain.ReloadPackagesList(APackageType: TPackageType);
|
||||
var
|
||||
LastIndex: integer;
|
||||
Key: Integer;
|
||||
Pkg: TPackage;
|
||||
Combo: TComboBox;
|
||||
PackageList: TPackageList;
|
||||
begin
|
||||
case (APackageType) of
|
||||
ptSoft: begin
|
||||
Combo := cmbSoftPkgSelect;
|
||||
PackageList := dmMain.SoftPackages;
|
||||
end;
|
||||
ptTools: begin
|
||||
Combo := cmbToolsPkgSelect;
|
||||
PackageList := dmMain.ToolsPackages;
|
||||
end;
|
||||
ptUnknown: raise Exception.Create('TfmMain.ReloadPackagesList(): передан ptUnknown');
|
||||
end;
|
||||
LastIndex := Combo.ItemIndex;
|
||||
if LastIndex < 0 then
|
||||
LastIndex := 0;
|
||||
Combo.Clear;
|
||||
PackageList.Reload();
|
||||
if PackageList.Count > 0 then
|
||||
begin
|
||||
for Key := 0 to PackageList.Count - 1 do
|
||||
begin
|
||||
Pkg := PackageList[Key];
|
||||
Combo.Items.Add(Pkg.Name + ' (' + ExtractFileName(Pkg.FileName) + ')');
|
||||
end;
|
||||
end;
|
||||
if Combo.Items.Count <= LastIndex then
|
||||
LastIndex := Combo.Items.Count - 1;
|
||||
Combo.ItemIndex := LastIndex;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -7,17 +7,20 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Types, uPackage;
|
||||
|
||||
// Получение списка файлов в директории
|
||||
function GetFileList(Path, FileMask: String; FullPaths: Boolean = True): TStringList;
|
||||
function GetABToolFileList(SubDir, FileMask: String;
|
||||
FullPaths: Boolean = True): TStringList;
|
||||
function GetPackagesIniFileList(PackageType: TPackageType;
|
||||
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 - маска файлов, по которой нужно отфильтровать список файлов
|
||||
@ -51,7 +54,7 @@ end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Функция: GetABToolFileList
|
||||
Назначение: Получает список всех файлов внутри директории ABTool\
|
||||
Назначение: Получение списка всех файлов внутри директории ABTool\
|
||||
Вх. параметры:
|
||||
SubDir: string - имя директории внутри ABTool\
|
||||
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
|
||||
@ -60,16 +63,14 @@ end;
|
||||
Возвращает:
|
||||
TStringList - список строк с полными путями или только с именами файлов пакетов
|
||||
------------------------------------------------------------------------------}
|
||||
function GetABToolFileList(SubDir, FileMask: String;
|
||||
FullPaths: Boolean = True): TStringList;
|
||||
function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList;
|
||||
begin
|
||||
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' +
|
||||
SubDir, FileMask, FullPaths);
|
||||
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' + SubDir, FileMask, FullPaths);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Функция: GetPackagesIniFileList
|
||||
Назначение: Получает список всех пакетов
|
||||
Назначение: Получение спискавсех файлов пакетов
|
||||
Вх. параметры:
|
||||
PackageType: TPackageType - тип пакета: ptSoft либо ptTools
|
||||
FullPaths: boolean - возвращать полные пути (true) или только имена
|
||||
@ -79,18 +80,13 @@ end;
|
||||
Исключения:
|
||||
TException - при попытке передать ptUnknown
|
||||
------------------------------------------------------------------------------}
|
||||
function GetPackagesIniFileList(PackageType: TPackageType;
|
||||
FullPaths: Boolean = True): TStringList;
|
||||
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');
|
||||
ptUnknown: raise Exception.Create('GetPackagesIniFileList(): передан ptUnknown');
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
end.
|
||||
|
105
upackage.pas
105
upackage.pas
@ -10,47 +10,115 @@ uses
|
||||
type
|
||||
{ TPackageType }
|
||||
|
||||
TPackageType = (ptSoft, ptTools, ptUnknown);
|
||||
// Перечисление типов пакета
|
||||
TPackageType = (
|
||||
// Пакет программ для установки
|
||||
ptSoft,
|
||||
// Пакет утилит
|
||||
ptTools,
|
||||
// Неизвестный пакет
|
||||
ptUnknown
|
||||
);
|
||||
|
||||
{ TPackage }
|
||||
|
||||
TPackage = class//(TCustomIniFile)
|
||||
// Класс пакета
|
||||
TPackage = class(TIniFile)
|
||||
strict private
|
||||
// Имя пакета: [PackageInfo] Name
|
||||
FName: String;
|
||||
// Описание пакета: [PackageInfo] Description
|
||||
FDescription: String;
|
||||
// Тип пакета
|
||||
FType: TPackageType;
|
||||
private
|
||||
// Установка информации о пакете
|
||||
procedure SetProperties();
|
||||
// Определение типа пакета по имени его файла
|
||||
function SetType(): TPackageType;
|
||||
public
|
||||
IniFile: TIniFile;
|
||||
Groups: TStringList;
|
||||
//--------
|
||||
// Имя пакета: [PackageInfo] Name
|
||||
property Name: String read FName;
|
||||
// Описание пакета: [PackageInfo] Description
|
||||
property Description: String read FDescription;
|
||||
// Тип пакета
|
||||
property PackageType: TPackageType read FType;
|
||||
//--------
|
||||
constructor Create(APkgFilename: String);
|
||||
|
||||
// Создание объекта пакета и установка информации о нём
|
||||
constructor Create(APkgFilename: Ansistring); overload;
|
||||
// Деструктор
|
||||
destructor Destroy(); override;
|
||||
function ExecuteItem(const AFileName, AParams: String;
|
||||
AHideMainWindow: Boolean; Out AOutExitcode: Cardinal): Boolean;
|
||||
|
||||
// Запуск исполняемого файла и получение результатов запуска
|
||||
function ExecuteItem(const AFileName, AParams: String; AHideMainWindow: Boolean;
|
||||
Out AOutExitcode: Cardinal): Boolean;
|
||||
end; // TPackage
|
||||
|
||||
implementation
|
||||
|
||||
{ TPackage }
|
||||
|
||||
constructor TPackage.Create(APkgFilename: String);
|
||||
{------------------------------------------------------------------------------
|
||||
Конструктор: TPackage.Create()
|
||||
Назначение: Создание объекта пакета и установка информации о нём
|
||||
Вх. параметры: APkgFilename: Ansistring - путь к ini-файлу
|
||||
------------------------------------------------------------------------------}
|
||||
constructor TPackage.Create(APkgFilename: Ansistring);
|
||||
begin
|
||||
|
||||
inherited Create(APkgFilename, [ifoStripComments, ifoStripInvalid]);
|
||||
SetProperties();
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TPackage.SetType()
|
||||
Назначение: Установка информации о пакете
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TPackage.SetProperties();
|
||||
begin
|
||||
FName := ReadString('PackageInfo', 'Name', '<без названия>');
|
||||
FDescription := ReadString('PackageInfo', 'Description', '<без описания>');
|
||||
FType := SetType();
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Функция: TPackage.SetType()
|
||||
Назначение: Определение типа пакета по имени его файла
|
||||
Возвращает: TPackageType - тип пакета
|
||||
------------------------------------------------------------------------------}
|
||||
function TPackage.SetType(): TPackageType;
|
||||
var
|
||||
SubStr: String;
|
||||
begin
|
||||
SubStr := Copy(ExtractFileName(FileName), 1, 4);
|
||||
if (LowerCase(SubStr) = 'soft') then
|
||||
Result := ptSoft
|
||||
else if (LowerCase(SubStr) = 'tool') then
|
||||
Result := ptTools
|
||||
else
|
||||
Result := ptUnknown;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Деструктор: TPackage.Destroy()
|
||||
------------------------------------------------------------------------------}
|
||||
destructor TPackage.Destroy();
|
||||
begin
|
||||
inherited Destroy();
|
||||
end;
|
||||
|
||||
|
||||
function TPackage.ExecuteItem(const AFileName, AParams: String;
|
||||
AHideMainWindow: Boolean; out AOutExitcode: Cardinal): Boolean;
|
||||
{------------------------------------------------------------------------------
|
||||
Функция: TPackage.ExecuteItem()
|
||||
Назначение: Запуск исполняемого файла и получение результатов запуска
|
||||
Вх. параметры:
|
||||
AFileName : String - путь к исполняемому файлу
|
||||
AParams : String - дополнительные параметры запуска
|
||||
AHideMainWindow : Boolean - скрывать главное окно ABTool (true) или нет (false)
|
||||
Вых. параметры:
|
||||
AOutExitcode : Cardinal - код завершения процесса
|
||||
Возвращает: boolean - true при успешном запуске программы, false при неудаче
|
||||
------------------------------------------------------------------------------}
|
||||
function TPackage.ExecuteItem(const AFileName, AParams: String; AHideMainWindow: Boolean;
|
||||
out AOutExitcode: Cardinal): Boolean;
|
||||
begin
|
||||
|
||||
end;
|
||||
@ -62,12 +130,3 @@ end.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -5,16 +5,93 @@ unit uPackageList;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, uPackage;
|
||||
Classes, SysUtils, uFileUtils, uPackage;
|
||||
|
||||
type
|
||||
|
||||
{ TPackageList }
|
||||
TPackageList = class(TList)
|
||||
|
||||
// Класс списка пакетов
|
||||
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;
|
||||
|
||||
// Создание списка пакетов по указанному типу
|
||||
procedure Load(APackageType: TPackageType);
|
||||
// Заполнение списка пакетов объектами пакетов
|
||||
procedure Reload();
|
||||
// Получение количества пакетов в списке
|
||||
function Count(): integer;
|
||||
end; // TPackageList
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{ 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;
|
||||
|
||||
end.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user