//----------------------------------------------------------//
//------- Delphi对保存数据库连接信息的Ini文件的操作类 ------//
//------- 作用:封装对ini文件的操作 ------//
//------- 类名称: IniOptions ------//
//------- 属性如下: ------//
//------- FconfigAutoLogon: Boolean (是否自动登录) ------//
//------- FconfigAuthenticationStyle: string ------//
//------- (表示身份验证方式,WindowsNT/SQLServer) ------//
//------- FconfigServerName: string (服务器名称) ------//
//------- FconfigUserID: string (登录名) ------//
//------- FconfigPassword: string (登录密码) ------//
//------- FconfigDataBaseName: string(数据库名) ------//
//------- 方法如下: ------//
//------- Function getIniFileAbsolutePath():string; ------//
//------- 1.获取Ini文件的绝对路径 ------//
//------- Function IniFileExists():Boolean; ------//
//------- 2.判断Ini文件是否存在 ------//
//------- Function createNewIniFile():Boolean; ------//
//------- 3.创建新的Ini文件(默认配置) ------//
//------- procedure LoadSettings(Ini: TIniFile); ------//
//------- 4.从Ini文件中读取配置信息到属性值中 ------//
//------- procedure SaveSettings(Ini: TIniFile); ------//
//------- 5.将属性值保存到Ini文件中 ------//
//------- procedure LoadFromIniFile(); ------//
//------- 6.从Init文件中读取信息,调用1,2,3,4 ------//
//------- procedure SaveToIniFile(); ------//
//------- 7.保存到Ini文件,调用1,2,3,5 ------//
//------- 作者: 苏贵阳 2010-8-15 ------//
//-----------------------------------------------------------//
//------- IniOptions 使用说明 ------//
//------- 1.调用单元 uses IniOptionsUnit; ------//
//------- 2.IniOptions.LoadFromIniFile(); ------//
//------- CB_FWQMC.Text := IniOptions.configServerName ------//
//----- 3. IniOptions.configDataBaseName:=CB_SJKM.Text; -----//
//------- IniOptions.SaveToIniFile(); ------//
//-----------------------------------------------------------//
unit IniOptionsUnit;
interface
uses //使用到的包
Classes, SysUtils, IniFiles, Forms, Windows, Messages,Dialogs;
const //---常量定义
IniFileRelativePath = 'ADOConnConfInfo.ini'; //---默认的Ini文件名
//---配置文件中的关键字名称
csIniconfigSection = 'config';
{Section: config}
csIniconfigAutoLogon = 'AutoLogon';
csIniconfigAuthenticationStyle = 'AuthenticationStyle';
csIniconfigServerName = 'ServerName';
csIniconfigUserID = 'UserID';
csIniconfigPassword = 'Password';
csIniconfigDataBaseName = 'DataBaseName';
type
TIniOptions = class(TObject) //---定义类
private
//---属性定义
{Section: config}
FconfigAutoLogon: Boolean;
FconfigAuthenticationStyle: string;
FconfigServerName: string;
FconfigUserID: string;
FconfigPassword: string;
FconfigDataBaseName: string;
public
//---方法定义
Function getIniFileAbsolutePath():string;
Function IniFileExists():Boolean;
Function createNewIniFile():Boolean;
procedure LoadSettings(Ini: TIniFile);
procedure SaveSettings(Ini: TIniFile);
procedure LoadFromIniFile();
procedure SaveToIniFile();
{Section: config}
//--- 对属性值进行读取和保存操作,如 Get和Set
property configAutoLogon: Boolean read FconfigAutoLogon write FconfigAutoLogon;
property configAuthenticationStyle: string read FconfigAuthenticationStyle write FconfigAuthenticationStyle;
property configServerName: string read FconfigServerName write FconfigServerName;
property configUserID: string read FconfigUserID write FconfigUserID;
property configPassword: string read FconfigPassword write FconfigPassword;
property configDataBaseName: string read FconfigDataBaseName write FconfigDataBaseName;
end;
var
IniOptions: TIniOptions = nil; //--- 生成一个对象IniOptions属于类TIniOptions
implementation
Function TIniOptions.getIniFileAbsolutePath():string;
//-------------------------------------------------------//
//------ getIniFileAbsolutePath 说明 ------//
//------ 函数作用:获取Ini文件的绝对路径 ------//
//------ 返回值:Ini文件的绝对路径 ------//
//-------------------------------------------------------//
var
IniFileAbsolutePath : string;
begin
IniFileAbsolutePath:= ExtractFilePath(application.ExeName); //获取INI文件路径。
if IniFileAbsolutePath[length(IniFileAbsolutePath)]='' then
IniFileAbsolutePath := IniFileAbsolutePath + IniFileRelativePath
else
IniFileAbsolutePath := IniFileAbsolutePath + IniFileRelativePath ;
result := IniFileAbsolutePath ;
end;
Function TIniOptions.IniFileExists():Boolean;
//-------------------------------------------------------//
//------ IniFileExists 说明 ------//
//------ 函数作用:判断Ini文件是否存在 ------//
//------ 返回值:存在返回true,不存在返回false ------//
//-------------------------------------------------------//
begin
if FileExists(getIniFileAbsolutePath()) then
result := True
else result := False;
end;
Function TIniOptions.createNewIniFile():Boolean;
//-------------------------------------------------------//
//------ createNewIniFile 说明 ------//
//------ 函数作用:如果Ini文件不存在就创建新文件 ------//
//------ 返回值:已存在返回false,创建成功返回TRUE------//
//-------------------------------------------------------//
var
_file :Textfile;
filehandle:Thandle;
begin
if IniFileExists() then
begin
result := False;
end
else
begin
FileHandle:=FileCreate(getIniFileAbsolutePath());
fileclose(FileHandle);
AssignFile(_file,getIniFileAbsolutePath());
rewrite(_file);
try
Writeln(_file,';AutoLogon用来表示是否自动登录');
Writeln(_file,';AuthenticationStyle表示身份验证方式,WindowsNT/SQLServer');
Writeln(_file,';ServerName表示SQL服务器名称');
Writeln(_file,';UserID 表示登录名');
Writeln(_file,';Password表示密码');
Writeln(_file,';DataBaseName表示数据库名');
Writeln(_file,'[config]');
Writeln(_file,'AutoLogon=1');
Writeln(_file,'AuthenticationStyle=SQLServer');
Writeln(_file,'ServerName=(local)');
Writeln(_file,'UserID=sa');
Writeln(_file,'Password=');
Writeln(_file,'DataBaseName=master');
finally
Closefile(_file);
end;
result := True;
end;
end;
procedure TIniOptions.LoadSettings(Ini: TIniFile);
//-------------------------------------------------------//
//------ LoadSettings 说明 ------//
//------ 作用:从Ini文件中读取配置信息到属性值中 ------//
//------ 返回值:无 ------//
//-------------------------------------------------------//
begin
if Ini <> nil then
begin
{Section: config}
FconfigAutoLogon := Ini.ReadBool(csIniconfigSection, csIniconfigAutoLogon, True);
FconfigAuthenticationStyle := Ini.ReadString(csIniconfigSection, csIniconfigAuthenticationStyle, 'SQLServer');
FconfigServerName := Ini.ReadString(csIniconfigSection, csIniconfigServerName, 'local');
FconfigUserID := Ini.ReadString(csIniconfigSection, csIniconfigUserID, 'sa');
FconfigPassword := Ini.ReadString(csIniconfigSection, csIniconfigPassword, '');
FconfigDataBaseName := Ini.ReadString(csIniconfigSection, csIniconfigDataBaseName, 'master');
end;
end;
procedure TIniOptions.SaveSettings(Ini: TIniFile);
//-------------------------------------------------------//
//------ SaveSettings 说明 ------//
//------ 作用:将属性值保存到Ini文件中 ------//
//------ 返回值:无 ------//
//-------------------------------------------------------//
begin
if Ini <> nil then
begin
{Section: config}
Ini.WriteBool(csIniconfigSection, csIniconfigAutoLogon, FconfigAutoLogon);
Ini.WriteString(csIniconfigSection, csIniconfigAuthenticationStyle, FconfigAuthenticationStyle);
Ini.WriteString(csIniconfigSection, csIniconfigServerName, FconfigServerName);
Ini.WriteString(csIniconfigSection, csIniconfigUserID, FconfigUserID);
Ini.WriteString(csIniconfigSection, csIniconfigPassword, FconfigPassword);
Ini.WriteString(csIniconfigSection, csIniconfigDataBaseName, FconfigDataBaseName);
end;
end;
procedure TIniOptions.LoadFromIniFile();
//-------------------------------------------------------//
//------ LoadFromIniFile 说明 ------//
//------ 作用:从Init文件中读取信息,调用1,2,3,4 ------//
//------ 返回值:无 ------//
//-------------------------------------------------------//
var
Ini: TIniFile;
FileName : string;
begin
FileName := getIniFileAbsolutePath();
if not IniFileExists() then createNewIniFile();
Ini := TIniFile.Create(FileName);
try
LoadSettings(Ini);
finally
Ini.Free;
end;
end;
procedure TIniOptions.SaveToIniFile();
//-------------------------------------------------------//
//------ SaveToIniFile 说明 ------//
//------ 作用:保存到Ini文件,调用1,2,3,5 ------//
//------ 返回值:无 ------//
//-------------------------------------------------------//
var
Ini: TIniFile;
FileName : string;
begin
FileName := getIniFileAbsolutePath();
if not IniFileExists() then createNewIniFile();
Ini := TIniFile.Create(FileName);
try
SaveSettings(Ini);
finally
Ini.Free;
end;
end;
initialization
IniOptions := TIniOptions.Create;
finalization
IniOptions.Free;
end.
//---------------------------------------ADOConnConfInfo.ini-----------------------------------------//
;AutoLogon用来表示是否自动登录
;AuthenticationStyle表示身份验证方式,WindowsNT/SQLServer
;ServerName表示SQL服务器名称
;UserID 表示登录名
;Password表示密码
;DataBaseName表示数据库名
[config]
AutoLogon=1
AuthenticationStyle=WindowsNT
ServerName=111
UserID=sa
Password=
DataBaseName=111
转载于:https://blog.51cto.com/suguiyang/375675