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

📄 hxclientapp.pas

📁 delphi 开发的自动升级源码
💻 PAS
字号:
unit hxClientApp;

interface

uses
  hxUpdate, ComCtrls, IniFiles, SysUtils;

type
  TConnectType = (ctDirect, ctProxy);

  ThxClientSettings = class(TObject)
  private
    FUseProxy: Boolean;
    FServerPort: Integer;
    FProxyPort: Integer;
    FServerIP: string;
    FProxyUser: string;
    FIniFileName: string;
    FProxyIP: string;
    FProxyPass: string;
    FServerUser: string;
    FServerPass: string;
    FConnectType: TConnectType;
    procedure SaveSettings;
    procedure LoadSettings;
  public
    constructor Create(IniFileName: string);
    destructor Destroy; override;
    property ConnectType: TConnectType read FConnectType write FConnectType;
    property ServerIP: string read FServerIP write FServerIP;
    property ServerPort: Integer read FServerPort write FServerPort;
    property ServerUser: string read FServerUser write FServerUser;
    property ServerPass: string read FServerPass write FServerPass;
    property UseProxy: Boolean read FUseProxy write FUseProxy;
    property ProxyIP: string read FProxyIP write FProxyIP;
    property ProxyPort: Integer read FProxyPort write FProxyPort;
    property ProxyUser: string read FProxyUser write FProxyUser;
    property ProxyPass: string read FProxyPass write FProxyPass;
  end;

  ThxClientApp = class(TObject)
  private
    FUpdateClient: ThxUpdateClient;
    FSettings: ThxClientSettings;
  public
    constructor Create(ProjectName: string);
    destructor Destroy; override;
    property UpdateClient: ThxUpdateClient read FUpdateClient;
    property Settings: ThxClientSettings read FSettings;
  end;

  function GetClientApp: ThxClientApp;
  
var
  G_ClientApp: ThxClientApp = nil;

implementation

function GetClientApp: ThxClientApp;
begin
  if not Assigned(G_ClientApp) then
    raise Exception.Create('无法获取ClientApp,类尚未创建!');

  Result:= G_ClientApp;
end;

{ ThxClientApp }

constructor ThxClientApp.Create(ProjectName: string);
begin
  FSettings:= ThxClientSettings.Create(ExtractFilePath(ParamStr(0)) + 'Client.ini');
  with FSettings do
  begin
    FUpdateClient:= ThxUpdateClient.Create(ProjectName);
    with FUpdateClient.ProxyInfo do
    begin
      Enabled:= UseProxy;
      IP:= ProxyIP;
      Port:= ProxyPort;
      Username:= ProxyUser;
      Password:= ProxyPass;
    end;
  end;
end;

destructor ThxClientApp.Destroy;
begin
  FUpdateClient.Destroy;
  FSettings.Free;
  inherited Destroy;
end;

{ ThxClientSettings }

constructor ThxClientSettings.Create(IniFileName: string);
begin
  FIniFileName:= IniFileName;
  LoadSettings;
end;

destructor ThxClientSettings.Destroy;
begin
  SaveSettings;
  inherited Destroy;
end;

procedure ThxClientSettings.LoadSettings;
var
  Ini: TIniFile;
begin
  Ini:= TIniFile.Create(FIniFileName);
  try
    FConnectType:= TConnectType(Ini.ReadInteger('Server', 'ConnectType', 0));
    FServerIP:= Ini.ReadString('Server', 'Address', '');
    FServerPort:= Ini.ReadInteger('Server', 'Port', 9901);
    FServerUser:= Ini.ReadString('Server', 'Username', '');
    FServerPass:= Ini.ReadString('Server', 'Password', '');
    FUseProxy:= Ini.ReadBool('Server', 'UseProxy', False);
    FProxyIP:= Ini.ReadString('Server', 'ProxyIP', '');
    FProxyPort:= Ini.ReadInteger('Server', 'ProxyPort', 1080);
    FProxyUser:= Ini.ReadString('Server', 'ProxyUser', '');
    FProxyPass:= Ini.ReadString('Server', 'ProxyPass', '');
  finally
    Ini.Free;
  end;
end;

procedure ThxClientSettings.SaveSettings;
var
  Ini: TIniFile;
begin
  Ini:= TIniFile.Create(FIniFileName);
  try
    Ini.WriteInteger('Server', 'ConnectType', Integer(FConnectType));
    Ini.WriteString('Server', 'Address', FServerIP);
    Ini.WriteInteger('Server', 'Port', FServerPort);
    Ini.WriteString('Server', 'Username', FServerUser);
    Ini.WriteString('Server', 'Password', FServerPass);
    Ini.WriteBool('Server', 'UseProxy', FUseProxy);
    Ini.WriteString('Server', 'ProxyIP', FProxyIP);
    Ini.WriteInteger('Server', 'ProxyPort', FProxyPort);
    Ini.WriteString('Server', 'ProxyUser', FProxyUser);
    Ini.WriteString('Server', 'ProxyPass', FProxyPass);
  finally
    Ini.Free;
  end;
end;

end.

⌨️ 快捷键说明

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