易语言:A_寻找通配符子程序完整实现及详细代码解读
以下是将你提供的代码功能用易语言完整实现的版本,代码中对各个步骤进行了详细的注释,同时修正了原代码中一些可能存在的潜在问题。 ```e .版本 2 .子程序 A_寻找通配符, 整数型, , 搜索??内容大于255 .参数 被搜寻字节集, 字节集 .参数 欲寻找字节集, 文本型 .参数 起始搜寻位置, 整数型, 可空 .局部变量 数据地址, 整数型 .局部变量 数据大小, 整数型 .局部变量 搜索地址, 整数型 .局部变量 寻找的字节集, 字节集 .局部变量 匹配内容, 文本型 .局部变量 文本部分, 文本型 .局部变量 当前位置, 整数型 ' 若起始搜寻位置为空,将其设置为 1 .如果真 (是否为空 (起始搜寻位置)) 起始搜寻位置 = 1 .如果真结束 ' 获取被搜寻字节集的起始地址 数据地址 = 取字节集指针 (被搜寻字节集) + 起始搜寻位置 - 1 ' 计算被搜寻字节集从起始位置开始的有效长度 数据大小 = 取字节集长度 (被搜寻字节集) - 起始搜寻位置 + 1 搜索地址 = 1 ' 去除欲寻找字节集中的所有空格 匹配内容 = 删全部空 (欲寻找字节集) ' 检查欲寻找字节集的长度是否为偶数,若不是则返回 -1 表示错误 .如果真 (取文本长度 (匹配内容) % 2 ≠ 0) 返回 (-1) .如果真结束 ' 检查欲寻找字节集转换为字节后的长度是否超过被搜寻字节集的有效长度,若超过则返回 -1 .如果真 (取文本长度 (匹配内容) ÷ 2 > 数据大小) 返回 (-1) .如果真结束 ' 检查欲寻找字节集转换为字节后的长度是否超过 255,若超过则返回 -1 .如果真 (取文本长度 (匹配内容) ÷ 2 > 255) 返回 (-1) .如果真结束 当前位置 = -1 ' 循环处理欲寻找字节集,将其转换为字节集 .判断循环首 (匹配内容 ≠ "") 文本部分 = 取文本左边 (匹配内容, 2) .如果真 (文本部分 ≠ "" 且 文本部分 ≠ "??") 寻找的字节集 = 寻找的字节集 + 到字节集 (到字节 (当前位置)) + 到字节集 (到字节 (十六到十 (文本部分))) .如果真结束 当前位置 = 当前位置 + 1 匹配内容 = 文本替换 (匹配内容, 1, 2, "") .判断循环尾 () ' 获取转换后字节集的指针 搜索地址 = 取字节集指针 (寻找的字节集) ' 置入汇编代码 置入代码 ({ 139, 125, 252, 139, 77, 248, 139, 117, 244, 139, 86, 252, 49, 192, 133, 201, 116, 33, 138, 70, 1, 242, 174, 117, 26, 187, 2, 0, 0, 0, 138, 4, 51, 138, 4, 56, 58, 68, 51, 1, 117, 228, 131, 195, 2, 57, 211, 115, 13, 235, 235, 184, 255, 255, 255, 255, 137, 236, 93, 194, 10, 0, 43, 125, 252, 137, 125, 252 }) ' 返回最终的搜索起始地址 返回 (数据地址 + 起始搜寻位置 - 1) ``` 代码说明: 1. 参数与局部变量: - 子程序 `A_寻找通配符` 接收三个参数:`被搜寻字节集`、`欲寻找字节集` 和 `起始搜寻位置`(可选)。 - 定义了多个局部变量,用于存储地址、长度、处理后的字节集等信息。 2. 起始位置处理: - 检查 `起始搜寻位置` 是否为空,如果为空则将其设置为 1。 3. 数据有效性检查: - 计算 `被搜寻字节集` 的有效长度。 - 去除 `欲寻找字节集` 中的空格,并检查其长度是否为偶数,是否超过 `被搜寻字节集` 的有效长度,以及是否超过 255。若不满足条件则返回 -1。 4. 字节集转换: - 循环处理 `欲寻找字节集`,将其转换为字节集 `寻找的字节集`。当遇到 `` 或 `??` 时跳过处理。 5. 汇编代码置入: - 使用 `置入代码` 命令将指定的汇编代码字节集插入到程序中。 6. 结果返回: - 最终返回 `数据地址` 和 `起始搜寻位置` 调整后的结果。 你可以将上述代码复制到易语言编辑器中使用,根据实际需求进行进一步的调试和扩展。 ######[AI问答 | 1368点数解答 | 2026-02-09 16:49:12]
- 危险!复杂PHP代码暗藏安全风险,切勿轻易运行!(字节豆包 | 43点数解答 | 2025-05-03 12:57:48)175
- 基于逻辑回归的乳腺癌数据分类预测:分析威斯康星乳腺肿瘤数据集(阿里通义 | 889点数解答 | 2025-06-19 12:02:10)202
- C语言:数组元素求解二次方程问题的代码优化与解析(阿里通义 | 576点数解答 | 2024-11-13 20:26:12)180
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)349
- Linux开发必知:通配符 * ? [n - m] {n,m}含义大揭秘!(百度文心 | 282点数解答 | 2023-11-09 18:44:53)211
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)245
- 易语言代码分析:潜在优化与需关注的逻辑要点(字节豆包 | 175点数解答 | 2025-01-21 23:31:57)275
- 易语言实现守护程序与被守护程序:精易模块助力,自动重启保障运行!(DeepSeek | 1313点数解答 | 2025-04-10 00:14:48)224
- 易语言:组合子程序实现DNF内存数据获取与窗口图标设置(字节豆包 | 333点数解答 | 2026-02-09 11:39:41)27
- C++ 实现我的世界基岩版:从简单框架到开发要点揭秘(字节豆包 | 182点数解答 | 2025-02-22 15:53:11)200
- C++ 实现完整斗地主:含洗牌、发牌与手牌展示,可按需扩展!(字节豆包 | 1028点数解答 | 2026-01-10 08:02:37)38
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)319