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

📄 setfileu.pas

📁 采用加密算法进行管理用户密码采用加密算法进行管理用户密码
💻 PAS
字号:
{-----------------------------------------------------------------------------
  单元名称:  SetFileU
  所属工程:
  作者:      王晓飞(远帆,Yuan-fan)
  电子邮件:  yuan-fan@21cn.com,yuan-fan@xindkj.com

  目的:      1、本单元是 SetFile.Dll 的接口单元,以方便调用 SetFile.Dll 的各项
              功能。

        2、SetFile.Dll是通用配置文件单元,用于加密存储程序配置数据,同时内
              置数据校验以保证数据存储安全。

        3、数据类型:目前支持8种数据类型,如TDataType类型所列
                 1-DtChar:固定长度字符串,超出长度的将被自动截去
                 2-DtInteger:整数数据类型,4Byte,可以为负数
                 3-DtLongWord:长整数据类型,4Byte,不能为负数
                 4-DtReal:实型,长度为6个字节,
                 5-DtDateTime:日期时间类型
                 6-DtCurrency:实型,可存储4位小数
                 7-DtBoolean:布尔类型
                 8-DtStream:流(大二进制)数据类型,可存储任意长度数据

              4、函数返回值:SetFile.Dll的大多数函数均有一个TResult类型的返回值,
              其含意如下:
                 1-RSuccess:函数调用成功返回
                 2-RFileExists:文件已经存在(仅用于CreateSetFile函数)
                 3-RCreateFileErr:文件创建失败(仅用于CreateSetFile函数)
                 4-RUnknowErr:未知错误
                 5-ROpenFileErr:文件打开失败,常见于没有正确设置配置文件名时
                 6-RItemsNotFound:配置项未找到
                 7-RDataTypeErr:数据类型错误
                 8-RDataCheckErr:数据校验错误,可能发生于:a)尚未写入数据,b)配
                     置文件被损坏(其它配置项并不一定被损坏)


  相关单元:

  类列表:
  函数列表:
              1、CreateSetFile:创建一个空的配置文件

              2、CreateSetItems:创建配置项,此函数需要提供 Name:20字节以内的配
              置项名称;DataType:数据类型;DataLen:数据长度,对于 DtChar 和
              DtStream 必需提供此参数,对于其它类型数据可以使用缺省值;ID:返回
              生成的配置项ID。

              3、DeleteSetItems:删除某配置项。需要提供待删除配置项的名称或ID。
              需要说明的是被删除项仍可以正常读出直到配置文件被紧缩后。 

              4、PackSet:紧缩配置文件。由于 DeleteSetItems 是做的逻辑删除,所以
              删除配置项不会减小配置文件的大小,使用本函数后会物理删除被
              DeleteSetItems 删除的配置项。

              5、SaveSet:保存配置数据。可以按配置项的名称或ID进行写入。
              6、LoadSet:读取配置数据。可以按配置项的名称或ID进行写入。

              7、CreateSetFile:创建 TSetFile 实例。
              8、SetFileName:读取或设置配置文件名称。

  创建日期:  2002-06-18
-----------------------------------------------------------------------------}

unit SetFileU;

interface

uses
  Classes;

type
  TResult = (RSuccess, RFileExists, RCreateFileErr, RUnknowErr, ROpenFileErr, RItemsNotFound,
    RDataTypeErr, RDataCheckErr);

  TDataType = (DtUnknow, DtChar, DtInteger, DtLongWord, DtReal, DtDateTime, DtCurrency, DtBoolean,
    DtStream);

  TSetFile = class
  private
    function GetSetFileName: PChar; virtual; abstract;
    procedure SetSetFileName(const Value: PChar); virtual; abstract;
  public
    function CreateSetFile: TResult; virtual; abstract; //创建配置文件
    function PackSet: TResult; virtual; abstract; //紧缩配置文件

    function CreateSetItems(var ID: Integer; Name: ShortString; DataType: TDataType;
      DataLen: Integer = 0): TResult; virtual; abstract; //创建配置项
    function DeleteSetItems(Id: Integer): TResult; overload; virtual; abstract; //删除配置项
    function DeleteSetItems(Name: ShortString): TResult; overload; virtual; abstract;

    function SaveSet(ID: Integer; DataValue: OleVariant): TResult; overload; virtual; abstract;
    function SaveSet(Name: ShortString; DataValue: OleVariant): TResult; overload; virtual;
      abstract; //保存配置数据
    function SaveSet(ID: Integer; DataValue: TStream): TResult; overload; virtual; abstract;
    function SaveSet(Name: ShortString; DataValue: TStream): TResult; overload; virtual;
      abstract; //保存配置流数据


    function GetDataType(ID: Integer; var DataType: TDataType): TResult; overload; virtual;
      abstract; //取得配置项数据类型
    function GetDataType(Name: ShortString; var DataType: TDataType): TResult; overload; virtual;
      abstract;

    function LoadSet(ID: Integer; var DataValue: OleVariant): TResult; overload; virtual; abstract;
      //取得配置项数据
    function LoadSet(Name: ShortString; var DataValue: OleVariant): TResult; overload; virtual;
      abstract;
    function LoadSet(ID: Integer; var DataValue: TFileStream): TResult; overload; virtual;
      abstract;
    function LoadSet(Name: ShortString; var DataValue: TFileStream): TResult; overload; virtual;
      abstract; //取得配置项流数据
    function LoadSet(ID: Integer; var DataValue: TMemoryStream): TResult; overload; virtual;
      abstract;
    function LoadSet(Name: ShortString; var DataValue: TMemoryStream): TResult; overload; virtual;
      abstract;

    property SetFileName: PChar read GetSetFileName write SetSetFileName;
  end;

function CreateSetFile: TSetFile; stdcall; external 'SetFile.dll';

implementation

end.

⌨️ 快捷键说明

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