Delphi對保存數據庫連接信息的Ini文件的操作類

轉自: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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章