.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
.局部变量 临时字节集, 字节集
.局部变量 开始时间, 整数型
.局部变量 计次, 整数型
.局部变量 lzj, 字节集
.局部变量 lsz, 整数型, , "2"
.局部变量 临时数组, 整数型, , "0"
.局部变量 i, 整数型
临时字节集 = 取空白字节集 (12345678 × 3) + { 20, 21, 22, 120, 130, 140, 220, 230, 240 } + 取空白字节集 (200)
.计次循环首 (12345678 × 3, 计次)
临时字节集 [计次] = 计次
.计次循环尾 ()
开始时间 = 取启动时间 ()
lzj = { 18, 19, 20, 216, 230, 240 }
lsz [1] = 1
lsz [2] = 3
输出调试文本 (寻找字节集a (lzj, lsz, 临时字节集, { 6, 7, 8 }, 1, 取字节集长度 (临时字节集), 临时数组, 假))
输出调试文本 (“耗时:” + 到文本 (取启动时间 () - 开始时间))
.计次循环首 (取数组下标 (临时数组, ), i)
输出调试文本 (临时数组 [i])
.计次循环尾 ()
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 寻找字节集a, 逻辑型
.参数 需查找的内容, 字节集
.参数 位置排列数组, 整数型, 数组
.参数 被查找的内容, 字节集
.参数 偏移RGB, 字节集
.参数 起点, 整数型
.参数 终点, 整数型
.参数 返回位置数组, 整数型, 数组
.参数 全部匹配, 逻辑型, , 真,返回所有,假,只返回一个
.局部变量 需查找数据长度, 整数型
.局部变量 被查找数据长度, 整数型
.局部变量 队列长度, 整数型
.局部变量 ia, 整数型
.局部变量 ib, 整数型
.局部变量 通用逻辑, 逻辑型
.局部变量 tx, 整数型
.局部变量 ty, 整数型
' 需查找的内容 格式 {10,220,20,50,60,50}
' 位置排列数组 整数数组[] 对应需查找内容数量/3,每个代表需查找的内容的位置 例:需查找的内容[1][2][3] 的位置放在 位置排列数组[1] 中间跳过相当于通配符
' 偏移RGB {10,10,10}
' 起点
' 终点
重定义数组 (返回位置数组, 假, 0)
队列长度 = 取数组下标 (位置排列数组, )
.如果真 (队列长度 < 1)
返回 (假)
.如果真结束
需查找数据长度 = 位置排列数组 [队列长度] × 3
被查找数据长度 = 取字节集长度 (被查找的内容)
.如果真 (起点 > 被查找数据长度 - 需查找数据长度)
返回 (假)
.如果真结束
.如果真 (终点 > 被查找数据长度)
终点 = 被查找数据长度
.如果真结束
.变量循环首 (起点, 终点, 3, ia)
.如果真 (被查找数据长度 - ia < 需查找数据长度)
跳出循环 ()
.如果真结束
' 调试输出 (被查找的内容 [ia], 被查找的内容 [ia + 1], 被查找的内容 [ia + 2])
.如果真 (取绝对值 (被查找的内容 [ia] - 需查找的内容 [1]) < 偏移RGB [1] 且 取绝对值 (被查找的内容 [ia + 1] - 需查找的内容 [2]) < 偏移RGB [2] 且 取绝对值 (被查找的内容 [ia + 2] - 需查找的内容 [3]) < 偏移RGB [3]) ' 比对第一组数据
通用逻辑 = 真
.如果真 (队列长度 ≥ 2) ' 比对后面数据
.变量循环首 (2, 队列长度, 1, ib)
tx = ia + 位置排列数组 [ib] × 3 - 3
ty = ib × 3 - 2
.如果 (取绝对值 (被查找的内容 [tx] - 需查找的内容 [ty]) < 偏移RGB [1] 且 取绝对值 (被查找的内容 [tx + 1] - 需查找的内容 [ty + 1]) < 偏移RGB [2] 且 取绝对值 (被查找的内容 [tx + 2] - 需查找的内容 [ty + 2]) < 偏移RGB [3])
.否则
通用逻辑 = 假
跳出循环 ()
.如果结束
.变量循环尾 ()
.如果真结束
.如果真 (通用逻辑 = 真)
加入成员 (返回位置数组, ia)
.如果真 (全部匹配 = 假)
返回 (真)
.如果真结束
.如果真结束
.如果真结束
.变量循环尾 ()
.如果 (取数组下标 (返回位置数组, ) > 0)
返回 (真)
.否则
返回 (假)
.如果结束
就是太慢了,小弟新手莫笑.求优化求指点.
|