轉自:http://suguiyang.blog.51cto.com/1035725/375675
/----------------------------------------------------------//
//------- 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