📄 xmlconfig.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 + -