EDB_操作模块源码
据说,1亿数据1秒查询!.版本 2
.程序集 模块入口
.程序集变量 集_数据库, 字节集
.程序集变量 集_是否打开, 逻辑型
.程序集变量 集_字段信息, EDB字段信息, , "0"
.程序集变量 集_数据偏移, 长整数型
.程序集变量 集_长度数组, 整数型, , "8"
.程序集变量 集_当前记录, 整数型
.程序集变量 集_数据库缓存, 字节集
.程序集变量 集_字段总长, 整数型
.程序集变量 集_数据库路径, 文本型
.子程序 EDB_打开, 逻辑型, 公开
.参数 数据库路径, 文本型, , 数据库路径
.局部变量 局_长度, 整数型
.局部变量 局_标志, 文本型
.局部变量 局_字段名偏移, 整数型
.局部变量 局_字段总长, 整数型
.局部变量 局_字段数, 整数型
.局部变量 局_计次, 整数型
.局部变量 局_字段信息, EDB字段信息
清除数组 (集_字段信息)
集_数据库 = 读入文件 (数据库路径)
集_数据库路径 = 数据库路径
局_长度 = 取字节集长度 (集_数据库)
.如果真 (局_长度 < 112)
集_数据库 = {}
返回 (假)
.如果真结束
局_标志 = 到文本 (取字节集左边 (集_数据库, 4))
.如果真 (局_标志 ≠ “WEDB”)
集_数据库 = {}
返回 (假)
.如果真结束
'
局_字段数 = 集_数据库
.计次循环首 (局_字段数, 局_计次)
局_字段名偏移 = (局_计次 - 1) × 72 + 117
局_字段信息.字段名 = 到文本 (取字节集中间 (集_数据库, 局_字段名偏移, 20))
局_字段信息.字段类型 = 集_数据库 [局_字段名偏移 + 20]
.如果 (局_字段信息.字段类型 ≥ #字节型 且 局_字段信息.字段类型 < #子程序指针型)
局_字段信息.字段长度 = 集_长度数组 [局_字段信息.字段类型]
.否则
.判断开始 (局_字段信息.字段类型 = #文本型)
局_字段信息.字段长度 = 集_数据库 [局_字段名偏移 + 28] + 集_数据库 [局_字段名偏移 + 29] × 256
.默认
集_数据库 = {}
返回 (假)
.判断结束
.如果结束
加入成员 (集_字段信息, 局_字段信息)
.计次循环尾 ()
集_数据偏移 = 局_字段数 × 72 + 117
局_计次 = 0
局_字段总长 = 0
.计次循环首 (取数组成员数 (集_字段信息), 局_计次)
局_字段总长 = 局_字段总长 + 集_字段信息 [局_计次].字段长度
.计次循环尾 ()
集_字段总长 = 局_字段总长
集_数据库缓存 = 取空白字节集 (集_字段总长)
集_当前记录 = 0
集_是否打开 = 真
返回 (真)
.子程序 EDB_取记录数, 整数型, 公开
.局部变量 局_记录数, 整数型
.如果真 (集_是否打开 = 真)
局_记录数 = 集_数据库 + 集_数据库 × 256 + 集_数据库 × 65536 + 集_数据库 × 16777216
返回 (局_记录数)
.如果真结束
返回 (0)
.子程序 EDB_读_文本, 文本型, 公开
.参数 字段位置, 整数型, , 字段位置
.局部变量 局_记录偏移, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_返回, 字节集
.局部变量 局_计次, 整数型
.如果真 (集_是否打开 = 真)
局_记录偏移 = (集_当前记录 - 1) × (集_字段总长 + 4) + 集_数据偏移'
局_长度 = 4
.计次循环首 (字段位置 - 1, 局_计次)
局_长度 = 局_长度 + 集_字段信息 [局_计次].字段长度
.计次循环尾 ()
局_返回 = 取字节集中间 (集_数据库, 局_记录偏移 + 局_长度, 集_字段信息 [字段位置].字段长度)
返回 (到文本 (局_返回))
.如果真结束
返回 (“”)
.子程序 EDB_线程读_文本, 文本型, 公开
.参数 记录位置, 整数型
.参数 字段位置, 整数型, , 字段位置
.局部变量 局_记录偏移, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_返回, 字节集
.局部变量 局_计次, 整数型
.如果真 (集_是否打开 = 真)
局_记录偏移 = (记录位置 - 1) × (集_字段总长 + 4) + 集_数据偏移'
局_长度 = 4
.计次循环首 (字段位置 - 1, 局_计次)
局_长度 = 局_长度 + 集_字段信息 [局_计次].字段长度
.计次循环尾 ()
局_返回 = 取字节集中间 (集_数据库, 局_记录偏移 + 局_长度, 集_字段信息 [字段位置].字段长度)
返回 (到文本 (局_返回))
.如果真结束
返回 (“”)
.子程序 EDB_写_文本, , 公开
.参数 字段位置, 整数型, , 字段位置
.参数 文本内容, 文本型, , 文本内容
.局部变量 局_记录偏移, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_返回, 字节集
.局部变量 局_计次, 整数型
.如果真 (集_是否打开 = 真)
局_记录偏移 = (集_当前记录 - 1) × (集_字段总长 + 4) + 集_数据偏移'
局_长度 = 4
.计次循环首 (字段位置 - 1, 局_计次)
局_长度 = 局_长度 + 集_字段信息 [局_计次].字段长度
.计次循环尾 ()
局_返回 = 到字节集 (文本内容)
.如果真 (取字节集长度 (局_返回) ≤ 集_字段信息 [字段位置].字段长度)
.计次循环首 (取字节集长度 (局_返回), 局_计次)
集_数据库 [局_记录偏移 + 局_长度 + 局_计次 - 1] = 局_返回 [局_计次]
.计次循环尾 ()
.如果真结束
.如果真结束
.子程序 EDB_跳过, , 公开
.如果真 (集_是否打开 = 真)
集_当前记录 = 集_当前记录 + 1
.如果真结束
.子程序 EDB_到首记录, , 公开
.如果真 (集_是否打开 = 真)
集_当前记录 = 1
.如果真结束
.子程序 EDB_加空记录, , 公开
.参数 记录数量, 整数型
.局部变量 局_记录数, 整数型
.局部变量 局_记录数字节集, 字节集
.局部变量 局_计次, 整数型
.局部变量 局_数据偏移, 整数型
.局部变量 局_尾记录偏移, 整数型
.局部变量 局_计次2, 整数型
.如果真 (集_是否打开 = 真)
.如果真 (记录数量 > 0)
局_记录数 = 集_数据库 + 集_数据库 × 256 + 集_数据库 × 65536 + 集_数据库 × 16777216
集_当前记录 = 局_记录数 + 1'
局_记录数 = 局_记录数 + 记录数量'
局_记录数字节集 = 到字节集 (局_记录数)
.计次循环首 (4, 局_计次)
集_数据库 = 局_记录数字节集 [局_计次]
.计次循环尾 ()
集_数据库 = 集_数据库 + 取空白字节集 ((集_字段总长 + 4) × 记录数量)'
局_尾记录偏移 = 集_数据库 + 集_数据库 × 256 + 集_数据库 × 65536 + 集_数据库 × 16777216
局_记录数 = 局_尾记录偏移 + 记录数量'
局_记录数字节集 = 到字节集 (局_记录数)
.计次循环首 (4, 局_计次)
集_数据库 = 局_记录数字节集 [局_计次]
.计次循环尾 ()
.计次循环首 (记录数量, 局_计次)
局_数据偏移 = (集_当前记录 - 1) × (集_字段总长 + 4) + 集_数据偏移'
局_记录数字节集 = 到字节集 (局_尾记录偏移)
.计次循环首 (4, 局_计次2)
集_数据库 [局_数据偏移 + 局_计次2 - 1] = 局_记录数字节集 [局_计次2]
.计次循环尾 ()
局_尾记录偏移 = 局_尾记录偏移 + 1
集_当前记录 = 集_当前记录 + 1
.计次循环尾 ()
.如果真结束
.如果真结束
.子程序 EDB_更新记录, , 公开
.如果真 (集_是否打开 = 真)
写到文件 (集_数据库路径, 集_数据库)
.如果真结束
.子程序 EDB_关闭, , 公开
.如果真 (集_是否打开 = 真)
写到文件 (集_数据库路径, 集_数据库)
集_数据库 = {}
集_是否打开 = 假
.如果真结束
.版本 2
.数据类型 EDB字段信息
.成员 字段名, 文本型
.成员 字段类型, 整数型
.成员 字段长度, 整数型
**** Hidden Message *****
做得太好了 感谢您的奉献,看不懂啊 zhichikaiyuan 看看是不是真的!~~~
页:
[1]