⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlite3inifile.pas

📁 定时器for timer for ic chip
💻 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 + -