📄 untconfig.pas
字号:
unit untConfig;
{********************************************************
作者:杨中科
功能:采购部门系统配置
********************************************************}
interface
uses Classes, SysUtils,MConnect, ObjBrkr, SConnect, Variants;
Const
CONFIGFILENAME = 'Config.ini';
APPSERVERLISTFILENAME = 'AppServerList.txt';
//设置应用服务器列表
procedure SetAppServerList(AValue: TStringList);
//读取应用服务器列表
procedure GetAppServerList(var AValue: TStringList);
//设置是使用应用服务器列表中的还是使用指定IP
//true是使用用服务器列表中的false则反之
procedure SetUseAppServerList(AValue: Boolean);
//读取是使用应用服务器列表中的还是使用指定IP
//true是使用用服务器列表中的false则反之
function GetUseAppServerList: Boolean;
//设置指定的IP(或局域网机器名)
procedure SetSomeIP(AValue: string);
//读取指定的IP(或局域网机器名)
function GetSomeIP: string;
//返回本机的局域网Ip地址
// 返回值: 成功: True, 并填充LocalIp 失败: False
function GetLocalIP(var LocalIp: string): Boolean;
//设定SocketConnection的连接形式
procedure SetSocketConnectionConnect(AValue: TSocketConnection);
//取得采购部门部门编号
function GetOrderDepartId: string;
//设置采购部门部门编号
procedure SetOrderDepartId(AValue: string);
//取得公司名称
function GetCompanyName: string;
implementation
uses CommonFunc, IniFiles,winsock;
procedure SetAppServerList(AValue: TStringList);
var
f: string;
begin
if AValue = nil then
raise Exception.Create('列表为初始化!');
f := GetApplicationPath + APPSERVERLISTFILENAME;
if FileExists(f) then
AValue.SaveToFile(f);
end;
procedure GetAppServerList(var AValue: TStringList);
begin
if AValue = nil then
raise Exception.Create('列表为初始化!');
AValue.LoadFromFile(GetApplicationPath + APPSERVERLISTFILENAME);
end;
procedure SetUseAppServerList(AValue: Boolean);
var
LIni: TIniFile;
begin
LIni := TIniFile.Create(GetApplicationPath + CONFIGFILENAME);
LIni.WriteBool('Connection', 'UseAppServerList', AValue);
LIni.Free;
end;
function GetUseAppServerList: Boolean;
var
LIni: TIniFile;
begin
LIni := TIniFile.Create(GetApplicationPath + CONFIGFILENAME);
result := LIni.ReadBool('Connection', 'UseAppServerList', false);
LIni.Free;
end;
procedure SetSomeIP(AValue: string);
var
LIni: TIniFile;
begin
LIni := TIniFile.Create(GetApplicationPath + CONFIGFILENAME);
LIni.WriteString('Connection', 'SomeIP', AValue);
LIni.Free;
end;
function GetSomeIP: string;
var
LIni: TIniFile;
begin
LIni := TIniFile.Create(GetApplicationPath + CONFIGFILENAME);
result := LIni.ReadString('Connection', 'SomeIP', '127.0.0.1');
LIni.Free;
end;
function GetLocalIP(var LocalIp: string): Boolean;
var
HostEnt: PHostEnt;
Ip: string;
addr: pchar;
Buffer: array [0..63] of char;
GInitData: TWSADATA;
begin
Result := False;
try
WSAStartup(2, GInitData);
GetHostName(Buffer, SizeOf(Buffer));
HostEnt := GetHostByName(buffer);
if HostEnt = nil then Exit;
addr := HostEnt^.h_addr_list^;
ip := Format('%d.%d.%d.%d', [byte(addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
LocalIp := Ip;
Result := True;
finally
WSACleanup;
end;
end;
procedure SetSocketConnectionConnect(AValue: TSocketConnection);
procedure FillAppServerList(ABroker: TSimpleObjectBroker);
var
sl: TStringList;
i, n: Integer;
begin
sl := TStringList.Create;
GetAppServerList(sl);
n := sl.Count - 1;
ABroker.ServerData := null;
for i := 0 to n do
begin
ABroker.Servers.Add;
ABroker.Servers[i].ComputerName := sl.Strings[i]
end;
sl.Free;
end;
var
LBroker: TSimpleObjectBroker;
begin
LBroker := TSimpleObjectBroker.Create(nil);
if GetUseAppServerList then
begin
FillAppServerList(LBroker);
AValue.ObjectBroker := LBroker;
try
AValue.Connected := true;
except
raise Exception.Create('应用服务器连接错误!');
end;
end
else
begin
AValue.Address := GetSomeIP;
try
AValue.Connected := true;
except
raise Exception.Create('应用服务器连接错误!');
end;
end;
LBroker.Free;
end;
function GetOrderDepartId: string;
var
LIni: TIniFile;
begin
LIni := TIniFile.Create(GetApplicationPath + CONFIGFILENAME);
result := LIni.ReadString('SysConfig', 'OrderDepartId', 'BM001');
LIni.Free;
end;
procedure SetOrderDepartId(AValue: string);
var
LIni: TIniFile;
begin
LIni := TIniFile.Create(GetApplicationPath + CONFIGFILENAME);
LIni.WriteString('SysConfig', 'OrderDepartId', AValue);
LIni.Free;
end;
function GetCompanyName: string;
begin
result := '凌科软件集团';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -