⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toolsmgr.pas

📁 MiniHex 1.1 源程序说明 “MiniHex11SrcSource”目录中的所有文件是MiniHex 1.1的主程序; “MiniHex11SrcControls”目录中的是该软件
💻 PAS
字号:
unit ToolsMgr;

interface

uses
  Windows, Messages, SysUtils, Classes, Forms, IniFiles;

type
  TToolsItem = record
    Title: string;
    CmdLine: string;
    Para: string;
    WorkDir: string;
    RunMode: Integer;
  end;

  TToolsItems = array of TToolsItem;

  TToolsMgr = class
  private
    FIniFileName: string;
    FItems: TToolsItems;

    procedure ReadItems(var Items: TToolsItems);
    procedure WriteItems(var Items: TToolsItems);
  public
    constructor Create(IniFileName: string);
    destructor Destroy; override;

    property Items: TToolsItems read FItems;

    procedure AddItem(Item: TToolsItem);
    procedure DeleteItem(Index: Integer);
    procedure ModifyItem(Index: Integer; Item: TToolsItem);
    procedure ClearItems;
    procedure MoveUp(Index: Integer);
    procedure MoveDown(Index: Integer);

    procedure Load;
    procedure Save;
  end;

var
  ToolsManager: TToolsMgr;

implementation

uses
  Misc;

constructor TToolsMgr.Create(IniFileName: string);
begin
  FIniFileName := IniFileName;
  ReadItems(FItems);
end;

destructor TToolsMgr.Destroy;
begin
  SetLength(FItems, 0);
end;

procedure TToolsMgr.AddItem(Item: TToolsItem);
begin
  SetLength(FItems, Length(FItems) + 1);
  FItems[High(FItems)] := Item;
end;

procedure TToolsMgr.DeleteItem(Index: Integer);
var
  i: Integer;
begin
  for i := Index to High(FItems) - 1 do
    FItems[i] := FItems[i + 1];
  SetLength(FItems, Length(FItems) - 1);
end;

procedure TToolsMgr.ModifyItem(Index: Integer; Item: TToolsItem);
begin
  FItems[Index] := Item;
end;

procedure TToolsMgr.ClearItems;
begin
  SetLength(FItems, 0);
end;

procedure TToolsMgr.MoveUp(Index: Integer);
var
  Temp: TToolsItem;
begin
  if (Index <= 0) or (Index > High(FItems)) then Exit;
  Temp := FItems[Index - 1];
  FItems[Index - 1] := FItems[Index];
  FItems[Index] := Temp;
end;

procedure TToolsMgr.MoveDown(Index: Integer);
var
  Temp: TToolsItem;
begin
  if (Index < 0) or (Index >= High(FItems)) then Exit;
  Temp := FItems[Index + 1];
  FItems[Index + 1] := FItems[Index];
  FItems[Index] := Temp;
end;

procedure TToolsMgr.ReadItems(var Items: TToolsItems);
var
  Ini: TIniFile;
  Section: string;
  i, Count: Integer;
begin
  Ini := TIniFile.Create(FIniFileName);
  SetLength(Items, 0);
  i := 0;
  Count := 0;
  while True do
  begin
    Section := 'Tools' + IntToStr(i);
    if Ini.SectionExists(Section) then
    begin
      SetLength(Items, Count + 1);
      Items[Count].Title := Ini.ReadString(Section, 'Title', '');
      Items[Count].CmdLine := Ini.ReadString(Section, 'CmdLine', '');
      Items[Count].Para := Ini.ReadString(Section, 'Para', '');
      Items[Count].WorkDir := Ini.ReadString(Section, 'WorkDir', '');
      Items[Count].RunMode := Ini.ReadInteger(Section, 'RunMode', 0);
      Inc(Count);
    end
    else Break;
    Inc(i);
  end;
  Ini.Free;
end;

procedure TToolsMgr.WriteItems(var Items: TToolsItems);
var
  Ini: TIniFile;
  Section: string;
  Sections: TStrings;
  i: Integer;
begin
  Ini := TIniFile.Create(FIniFileName);
  Sections := TStringList.Create;
  Ini.ReadSections(Sections);
  for i := 0 to Sections.Count - 1 do
  begin
    if UpperCase(Copy(Sections[i], 1, 5)) = 'TOOLS' then
      Ini.EraseSection(Sections[i]);
  end;
  for i := 0 to High(Items) do
  begin
    Section := 'Tools' + IntToStr(i);
    Ini.WriteString(Section, 'Title', Items[i].Title);
    Ini.WriteString(Section, 'CmdLine', Items[i].CmdLine);
    Ini.WriteString(Section, 'Para', Items[i].Para);
    Ini.WriteString(Section, 'WorkDir', Items[i].WorkDir);
    Ini.WriteInteger(Section, 'RunMode', Items[i].RunMode);
  end;
  Ini.Free;
  Sections.Free;
end;

procedure TToolsMgr.Load;
begin
  ReadItems(FItems);
end;

procedure TToolsMgr.Save;
begin
  WriteItems(FItems);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -