:207.659KB : :1 :2020-01-30 15:18:11
.子程序 写内存配置项, 逻辑型, 公开, 不需要针对换行符,[],=做处理,内部已经做了处理
.参数 节名, 文本型
.参数 项名, 文本型
.参数 项值, 文本型
.局部变量 data, 字节集, , "3"
.局部变量 节头, 字节集
.局部变量 写入数据, 字节集
.局部变量 位置_1, 整数型, , , 第一个节的位置
.局部变量 位置_2, 整数型, , , 项名的位置
.局部变量 位置_3, 整数型, , , 下一个节的位置
.如果真 (csh = 0)
许可证初始化 ()
.如果真结束
data [1] = 符号转义 (到字节集 (节名))
data [2] = 符号转义 (到字节集 (项名))
data [3] = 符号转义 (到字节集 (项值))
节头 = { 91 } + data [1] + { 93, 13, 10 }
写入数据 = data [2] + { 61 } + data [3] + { 13, 10 }
线程_进入许可区 (license)
位置_1 = 寻找字节集 (配置数据, 节头, 1) ' 从头查找
.如果 (位置_1 = -1) ' 节不存在,在末尾加入数据
配置数据 = 配置数据 + 节头 + 写入数据
线程_退出许可区 (license)
返回 (真)
.否则
位置_2 = 寻找字节集 (配置数据, { 13, 10 } + data [2] + { 61 }, 位置_1) ' 在当前节下查询项的位置
位置_3 = 寻找字节集 (配置数据, { 91 }, 位置_1 + 1) ' 查找下一个节的位置,因为有可能把项写到下一节里面去
.如果结束
.如果 (位置_2 = -1 或 位置_2 > 位置_3 且 位置_3 ≠ -1) ' 说明项不存在,或者后面的某节有同名项
字节集插入 (配置数据, 写入数据, 位置_1 + 取字节集长度 (data [1]) + 3)
.否则
位置_2 = 位置_2 + 2 ' 从项名的第一个字符开始
位置_3 = 寻找字节集 (配置数据, { 13, 10 }, 位置_2) + 2 ' 找到下一个换行符位置
配置数据 = 字节集替换 (配置数据, 位置_2, 位置_3 - 位置_2, 写入数据)
.如果结束
' [1]
' 2=345 2的位置是6,从6开始,替换7位(第二行+换行符),换行符的位置是11
' 1=123
线程_退出许可区 (license)
返回 (真)
.如果真 (csh = 0)
许可证初始化 ()
.如果真结束
data [1] = 符号转义 (到字节集 (节名))
data [2] = 符号转义 (到字节集 (项名))
节头 = { 91 } + data [1] + { 93, 13, 10 }
线程_进入许可区 (license)
位置_1 = 寻找字节集 (配置数据, 节头, 1) ' 从头查找
.如果 (位置_1 = -1) ' 节不存在,直接返回默认返回
线程_退出许可区 (license)
返回 (默认返回)
.否则
位置_2 = 寻找字节集 (配置数据, { 13, 10 } + data [2] + { 61 }, 位置_1) ' 在当前节下查询项的位置
位置_3 = 寻找字节集 (配置数据, { 91 }, 位置_1 + 1) ' 查找下一个节的位置,因为有可能把项写到下一节里面去
.如果结束
.如果 (位置_2 = -1 或 位置_2 > 位置_3 且 位置_3 ≠ -1) ' 说明项不存在,或者后面的某节有同名项
线程_退出许可区 (license)
返回 (默认返回)
.否则
位置_2 = 位置_2 + 取字节集长度 (data [2]) + 3 ' 起始取出位置
位置_3 = 寻找字节集 (配置数据, { 13, 10 }, 位置_2) ' 找到下一个换行符位置
str = 到文本 (符号反转义 (取字节集中间 (配置数据, 位置_2, 位置_3 - 位置_2)))
线程_退出许可区 (license)
返回 (str)
.如果结束
' [1]
' 2=345 2的位置是6,从6开始,替换7位(第二行+换行符),换行符的位置是11
' 144=123 1的位置是13,换行符的位置是20,从17开始取3位,需要20-17,易语言内存配置项线程安全、高效读写、防溢出源码,经过本人的诸多改良,毫无bug,带详细注释,相比精易模块的内存配置项,线程安全且内存不泄露。