📄 setfileu.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 + -