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

📄 qexport4inifiles.pas

📁 Advanced.Export.Component.v4.01.rar,delphi 第三方控件
💻 PAS
字号:
unit QExport4IniFiles;

{$I VerCtrl.inc}

interface

uses Classes, IniFiles, SysUtils, QExport4Types;

type
  TQIniFile = class(TIniFile)
  private
    FVersion: Integer;
  public
    constructor Create(FileName: String);
    constructor CreateWritingVersion(FileName: String; NumVersion: Integer);
    procedure ReadSectionValuesW(const Section: string; Strings: QEStrings);
    function ReadStringW(const Section, Ident: string;
      const Default: QEString): QEString;
    procedure WriteStringW(const Section, Ident: string; const Value: QEString);
    procedure WriteVersionSection;
    procedure ReadVersionSection;
    property Version: Integer read FVersion write FVersion;
  end;

implementation

{ TQIniFile }
constructor TQIniFile.Create(FileName: String);
begin
  inherited Create(FileName);
  FVersion := 0;
end;

constructor TQIniFile.CreateWritingVersion(FileName: String; NumVersion: Integer);
begin
  inherited Create(FileName);
  FVersion := NumVersion;
  WriteVersionSection;
end;

procedure TQIniFile.ReadSectionValuesW(const Section: string; Strings: QEStrings);
{$IFDEF QE_UNICODE}
var
  TempStrList: TStrings;
  i: Integer;
{$ENDIF}
begin
  {$IFDEF QE_UNICODE}
  TempStrList := TStringList.Create;
  inherited ReadSectionValues(Section, TempStrList);
  if Version >= 400 then
    for i := 0 to TempStrList.Count - 1 do
      Strings.Add(Utf8Decode(TempStrList[i]))
  else
    for i := 0 to TempStrList.Count - 1 do
      Strings.Add(TempStrList[i]);
  TempStrList.Free;
  {$ELSE}
  inherited ReadSectionValues(Section, Strings);
  {$ENDIF}
end;

function TQIniFile.ReadStringW(const Section, Ident: string;
  const Default: QEString): QEString;
begin
  {$IFDEF QE_UNICODE}
  if Version >= 400 then
    Result := Utf8Decode(inherited ReadString(Section, Ident, Default))
  else
    Result := inherited ReadString(Section, Ident, Default);
  {$ELSE}
  inherited ReadString(Section, Ident, Default);
  {$ENDIF}
end;

procedure TQIniFile.ReadVersionSection;
begin
  Version := StrToIntDef(ReadString('IniVersion', 'Number', '0'), 0);
end;

procedure TQIniFile.WriteStringW(const Section, Ident: string;
  const Value: QEString);
begin
  {$IFDEF QE_UNICODE}
  if Version >= 400 then
    inherited WriteString(Section, Ident, Utf8Encode(Value))
  else
    inherited WriteString(Section, Ident, Value);
  {$ELSE}
  inherited WriteString(Section, Ident, Value);
  {$ENDIF}
end;

procedure TQIniFile.WriteVersionSection;
begin
  WriteString('IniVersion', 'Number', IntToStr(Version));
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -