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

📄 xmlconfig.pas

📁 delphi的XMPRPC通讯例子
💻 PAS
字号:
unit XMLConfig;

interface
uses
  SysUtils,     
  XMLWorks2;
  
type
  TAliasConnectionSettings = class (TXMLObject)
  private
    fAlias: string;
    fPassword: string;
    fUserName: string;
  public
    procedure LoadFromParams;
  published
    property Alias: string read fAlias write fAlias;
    property Password: string read fPassword write fPassword;
    property UserName: string read fUserName write fUserName;
  end;
  
  TServerConnectionSettings = class (TXMLObject)
  private
    fHost: string;
    fPassword: string;
    fPort: Integer;
    fUserName: string;
  published
    property Host: string read fHost write fHost;
    property Password: string read fPassword write fPassword;
    property Port: Integer read fPort write fPort;
    property UserName: string read fUserName write fUserName;
  end;
  
  TTIBSettings = class (TXMLObject)
  private
    fDaemon: string;
    fNetwork: string;
    fService: string;
    fSubject: string;
  published
    property Daemon: string read fDaemon write fDaemon;
    property Network: string read fNetwork write fNetwork;
    property Service: string read fService write fService;
    property Subject: string read fSubject write fSubject;
  end;
  
  TAliasSettingsItem = class (TXMLCollectionItem)
  private
    fName: string;
  public
    class function getTagName: string; override;
  published
    property Name: string read fName write fName;
  end;
  
  TAliasSettings = class (TXMLCollection)
  protected
    fFileName: string;
    fLoaded: Boolean;
    function GetItem(Index: Integer): TAliasSettingsItem;
    procedure SetItem(Index: Integer; Value: TAliasSettingsItem);
  public
    function FindAlias(p_sName: string): TAliasSettingsItem;
    function GetByAlias(p_sName: string): TAliasSettingsItem;
    procedure LoadSettings;
    property FileName: string read fFileName;
    property Items[Index: Integer]: TAliasSettingsItem read GetItem write 
            SetItem;
    property Loaded: Boolean read fLoaded;
  end;
  
  EXMLConfig = class (Exception)
  end;
  
  EXMLAliasConfig = class (EXMLConfig)
  end;
  
function getConfigFileName: String;


const
  c_sInvalidLogin = 'Invalid Login Information provided.  You must specify User Password and Alias';

implementation

uses
  Forms   
;

function getConfigFileName: String;
begin
  result := ChangeFileExt(Application.ExeName, '.xml');
end;


{ TAliasSettings }

{
******************************** TAliasSettings ********************************
}
function TAliasSettings.FindAlias(p_sName: string): TAliasSettingsItem;
var
  I: Integer;
begin
  for I := 0 to Count-1 do    // Iterate
  begin
    result := Items[I];
    if AnsiSameText(result.Name, p_sName) then
      exit;
  end;    // for
  result := nil;
end;

function TAliasSettings.GetByAlias(p_sName: string): TAliasSettingsItem;
begin
  result := FindAlias(p_sName);
  if not assigned(result) then
    raise EXMLConfig.Create('Unable to locate alias: "' + p_sName + '"');
  
end;

function TAliasSettings.GetItem(Index: Integer): TAliasSettingsItem;
begin
  result := inherited GetItem(Index) as TAliasSettingsItem;
end;

procedure TAliasSettings.LoadSettings;
begin
  fLoaded := False;
  fFileName := getConfigFileName;
  if Not FileExists(FileName) then
    exit;
  
  try
    LoadFromFile(FileName);
    fLoaded := True;
  except
    fLoaded := False;
  end;
end;

procedure TAliasSettings.SetItem(Index: Integer; Value: TAliasSettingsItem);
begin
  inherited SetItem(Index, Value);
end;

{ TAliasConnectionSettings }

{
*************************** TAliasConnectionSettings ***************************
}
procedure TAliasConnectionSettings.LoadFromParams;
begin
  { TODO : I still think the correct order should be "Alias User Pass" - currently it is "User Pass Alias" }
  fUserName := ParamStr(1);
  fPassword := ParamStr(2);
  fAlias := ParamStr(3);
  
  if ParamCount < 3 then
    raise EXMLAliasConfig.Create(c_sInvalidLogin);
end;

{ TAliasSettingsItem }

{
****************************** TAliasSettingsItem ******************************
}
class function TAliasSettingsItem.getTagName: string;
begin
  result := 'Alias';
end;

end.

⌨️ 快捷键说明

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