共享单元
客户端代码框架按功能暂分为以下大类,各类功能函数封装在各dll中,采用“各自实现,集中使用”的方式,共享函数需声明于框架共享单元 uNodeFunc.pas 中。
框架包和主程序都必须引用该单元,并在各项目属性中打开带包编译开关进行编译。
如图:
各分类功能函数可持续扩充
-
常用函数
// 值判断函数
IIF : function(Condition: Boolean; TrueReturn, FalseReturn: Variant): Variant; stdcall;
// 创建KID标识
NewKID : function: string; stdcall;
// 创建UUID4标识
NewUUID4 : function: string; stdcall;
// 字符串是否合法的GUID
IsGUID : function(const S: string): Boolean; stdcall;
// 计算机名
ComputerName : function: string; stdcall;
// INI文件取值
GetIniValue : function(AFile, ACatalog, AName: string; ADefault: Variant; AType: TVarType = varString): Variant; stdcall;
// INI文件写值
SetIniValue : function(AFile, ACatalog, AName: string; AValue: Variant; AType: TVarType = varString): Boolean; stdcall;
// 本地日期字符串 10 yyyy-mm-dd
CurrDateStr : function: string; stdcall;
// 本地时间字符串 12 hh:nn:ss:zzz
CurrTimeStr : function: string; stdcall;// 压缩流
StreamZip : procedure(var vs: TMemoryStream); stdcall;
// 解压流
StreamUnzip : procedure(var vs: Tmemorystream); stdcall;
// 压缩文件
FileCompress : function(const AFile, ToFile: string): Boolean; stdcall;
// 解压文件
FileDecompress : function(const DFile, ToFile: string): Boolean; stdcall; -
加密解密
// 对文件进行MD5转换 CnPack CnMD5
CNMD5File : function(const afile: string): string; stdcall;
// 对字符进行MD5转换 CnPack CnMD5
CNMD5String : function(const astr: string): string; stdcall;// 双钥加密字符串
LYFEncodeStringM : procedure(const instr: string; var outv1, outv2: string); stdcall;
// 双钥解密字符串
LYFDecodeStringM : function(const inv1, inv2: string): string; stdcall;// 带密码加密
NodeEncodeString : function(Source, Key: string): string; stdcall;
// 带密码解密
NodeDecodeString : function(Source, Key: string): string; stdcall; -
对话框
-
系统引擎
-
资源操作
-
本地数据
-
远程数据
-
操作系统
-
硬件函数
主程序
主程序为空白窗体,是个壳程序,其只实现与操作系统的交互、消息交换及框架资源调度。用主程序作为我们前端界面的 docker 用于承载各种应用。
如图:
功能区
主界面分为以下几个功能分区,其中菜单栏与状态栏由应用界面视自身需求隐藏或自行实现,左右工具栏用于承载系统框架或应用自行定义的工具;通知区用于承载系统公告、通知等信息; 事件消息区用于运行期输出调试信息;
最重要的工作区用于承载框架所要加载的应用,如图:
-
菜单栏
-
状态栏
-
左工具区
-
右工具区
-
通知区
-
事件消息区
-
工作区