📄 sqlite3inifile.pas
字号:
Unit SQLite3IniFile;
Interface
Uses
Classes, IniFiles, SQLite3IniFileDb;
Type
TSQLite3IniFile = Class(TCustomIniFile)
Private
FDb: TSQLite3IniFileDb;
Public
Constructor Create(Const AFileName: String; Const APassWord: String = '');
Constructor CreateW(Const AFileName: WideString; Const APassWord: WideString = '');
Destructor Destroy; Override;
Procedure Clear;
Procedure DeleteKey(Const ASection, AKey: String); Override;
Procedure EraseSection(Const ASection: String); Override;
Procedure Import(Const AIniFile: TCustomIniFile);
Function ReadInteger(Const ASection, AKey: String; ADefault: Integer): Integer; Override;
Procedure ReadSection(Const ASection: String; AStrings: TStrings); Override;
Procedure ReadSections(AStrings: TStrings); Override;
Procedure ReadSectionValues(Const ASection: String; AStrings: TStrings); Override;
Function ReadString(Const ASection, AKey, ADefault: String): String; Override;
Function SectionExists(Const ASection: String): Boolean;
Procedure UpdateFile; Override;
Function ValueExists(Const ASection, AKey: String): Boolean;
{$IFDEF COMPILER_9_UP} Override;
{$ENDIF}
Procedure WriteInteger(Const ASection, AKey: String; AValue: Integer); Override;
Procedure WriteString(Const ASection, AKey, AValue: String); Override;
Property DB: TSQLite3IniFileDb Read FDb;
End;
Implementation
Constructor TSQLite3IniFile.Create(Const AFileName: String; Const APassWord: String = '');
Begin
CreateW(AFileName, APassWord);
End;
Constructor TSQLite3IniFile.CreateW(Const AFileName: WideString; Const APassWord: WideString = '');
Begin
Inherited Create(AFileName);
FDb := TSQLite3IniFileDb.Create(AFileName, APassWord);
End;
Destructor TSQLite3IniFile.Destroy;
Begin
FDb.Free;
Inherited;
End;
Procedure TSQLite3IniFile.Clear;
Begin
FDb.Clear;
End;
Procedure TSQLite3IniFile.DeleteKey(Const ASection, AKey: String);
Begin
FDb.DeleteKey(ASection, AKey);
End;
Procedure TSQLite3IniFile.EraseSection(Const ASection: String);
Begin
FDb.EraseSection(ASection);
End;
Procedure TSQLite3IniFile.Import(Const AIniFile: TCustomIniFile);
Var
iSection: Integer;
Section: String;
Sections: TStringList;
iKey: Integer;
Key: String;
Keys: TStringList;
Value: String;
Begin
FDb.BeginUpdate;
Try
Sections := TStringList.Create;
Keys := TStringList.Create;
Try
AIniFile.ReadSections(Sections);
For iSection := 0 To Sections.Count - 1 Do
Begin
Section := Sections[iSection];
Keys.Clear;
AIniFile.ReadSection(Section, Keys);
For iKey := 0 To Keys.Count - 1 Do
Begin
Key := Keys[iKey];
Value := AIniFile.ReadString(Section, Key, '');
FDb.WriteString(Section, Key, Value);
End;
End;
Finally
Keys.Free;
Sections.Free;
End;
Finally
FDb.EndUpdate;
End;
End;
Function TSQLite3IniFile.ReadInteger(Const ASection, AKey: String; ADefault: Integer): Integer;
Begin
Result := FDb.ReadInteger(ASection, AKey, ADefault);
End;
Procedure TSQLite3IniFile.ReadSection(Const ASection: String; AStrings: TStrings);
Begin
FDb.ReadSection(ASection, AStrings);
End;
Procedure TSQLite3IniFile.ReadSections(AStrings: TStrings);
Begin
FDb.ReadSections(AStrings);
End;
Procedure TSQLite3IniFile.ReadSectionValues(Const ASection: String; AStrings: TStrings);
Begin
FDb.ReadSectionValues(ASection, AStrings);
End;
Function TSQLite3IniFile.ReadString(Const ASection, AKey, ADefault: String): String;
Begin
Result := FDb.ReadString(ASection, AKey, ADefault);
End;
Function TSQLite3IniFile.SectionExists(Const ASection: String): Boolean;
Begin
Result := FDb.SectionExists(ASection);
End;
Procedure TSQLite3IniFile.UpdateFile;
Begin
End;
Function TSQLite3IniFile.ValueExists(Const ASection, AKey: String): Boolean;
Begin
Result := FDb.KeyExists(ASection, AKey);
End;
Procedure TSQLite3IniFile.WriteInteger(Const ASection, AKey: String; AValue: Integer);
Begin
FDb.WriteInteger(ASection, AKey, AValue);
End;
Procedure TSQLite3IniFile.WriteString(Const ASection, AKey, AValue: String);
Begin
FDb.WriteString(ASection, AKey, AValue);
End;
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -