|

楼主 |
发表于 2021-1-6 18:39:09
|
显示全部楼层
广东省东莞市
由于发布太过于匆促,导致有些边界条件没返回好或某些情况没考虑,现在修改后再贴出最新的代码。
- .版本 2
- .子程序 自绘窗口_Accessible定位, 逻辑型, 公开, 是否成功定位
- .参数 原Accessible, 类_Accessible, , 传入即将要定位的Accessible根节点
- .参数 表达式, 文本型, , ">"进入下一节点,"#"根据序号进入节点,"?"根据条件进入节点,"&"且,"=="恒等于,"="包含于。n控件名称,s控件状态,t控件类型,id控件ID,v控件值。|例子“#4>#2>?n==ABC&t=EDF>#2”,意思为从根节点开始首先进入第4个节点再进入第2个节点再判断控件名称为ABC且控件类型内容含有EDF的节点再进入第2个节点
- .参数 定位后Accessible, 类_Accessible, 参考, 返回定位后Accessible
- .局部变量 子表达式, 文本型, , "0"
- .局部变量 i, 整数型
- .局部变量 command, 文本型
- .局部变量 opertor, 文本型
- .局部变量 childcount, 整数型
- .局部变量 Accessibles, 类_Accessible, , "0"
- .局部变量 j, 整数型
- .局部变量 found, 逻辑型
- .局部变量 Accessible, 类_Accessible
- Accessible = 原Accessible
- .计次循环首 (文本_分割文本 (表达式, “>”, , 子表达式), i)
- opertor = 取文本左边 (子表达式 [i], 1)
- command = 取文本右边 (子表达式 [i], 取文本长度 (子表达式 [i]) - 1)
- childcount = Accessible.取子元素总数 ()
- .判断开始 (opertor = “#”)
- .如果 (取绝对值 (到整数 (command)) > childcount)
- 返回 (假)
- .否则
- .如果 (到整数 (command) > 0)
- .如果真 (Accessible.取子元素 (到整数 (command), Accessible) = 假)
- 返回 (假)
- .如果真结束
- .否则
- .如果 (到整数 (command) < 0)
- .如果真 (Accessible.取子元素 (childcount + 到整数 (command) + 1, Accessible) = 假)
- 返回 (假)
- .如果真结束
- .否则
- 返回 (假)
- .如果结束
- .如果结束
- .如果结束
- .判断 (opertor = “?”)
- childcount = Accessible.枚举子元素 (Accessibles)
- found = 假
- .计次循环首 (childcount, j)
- .如果真 (内部_解析命令 (command, Accessibles [j]))
- Accessible = Accessibles [j]
- found = 真
- 跳出循环 ()
- .如果真结束
- .计次循环尾 ()
- .如果真 (found = 假)
- 返回 (假)
- .如果真结束
- .默认
- .判断结束
- .计次循环尾 ()
- 定位后Accessible = Accessible
- 返回 (真)
- .子程序 内部_解析命令, 逻辑型
- .参数 command, 文本型
- .参数 Accessible, 类_Accessible
- .局部变量 k, 整数型
- .局部变量 equal, 文本型, , "0"
- .局部变量 contain, 文本型, , "0"
- .局部变量 详细信息, 精易_详细信息
- .局部变量 child_commands, 文本型, , "0"
- 详细信息 = 自绘窗口_格式化信息 (Accessible)
- child_commands = 分割文本 (command, “&”, )
- .计次循环首 (取数组成员数 (child_commands), k)
- .判断开始 (寻找文本 (child_commands [k], “==”, , 假) ≠ -1)
- equal = 分割文本 (child_commands [k], “==”, )
- .判断开始 (equal [1] = “n”)
- .如果真 (详细信息.控件名称 ≠ equal [2])
- 返回 (假)
- .如果真结束
- .判断 (equal [1] = “s”)
- .如果真 (详细信息.控件状态 ≠ equal [2])
- 返回 (假)
- .如果真结束
- .判断 (equal [1] = “t”)
- .如果真 (详细信息.控件类型 ≠ equal [2])
- 返回 (假)
- .如果真结束
- .判断 (equal [1] = “id”)
- .如果真 (详细信息.控件ID ≠ equal [2])
- 返回 (假)
- .如果真结束
- .判断 (equal [1] = “v”)
- .如果真 (详细信息.控件值 ≠ equal [2])
- 返回 (假)
- .如果真结束
- .默认
- 返回 (假)
- .判断结束
- .判断 (寻找文本 (child_commands [k], “=”, , 假) ≠ -1)
- contain = 分割文本 (child_commands [k], “=”, )
- .判断开始 (contain [1] = “n”)
- .如果真 (寻找文本 (详细信息.控件名称, contain [2], , 假) = -1)
- 返回 (假)
- .如果真结束
- .判断 (contain [1] = “s”)
- .如果真 (寻找文本 (详细信息.控件状态, contain [2], , 假) = -1)
- 返回 (假)
- .如果真结束
- .判断 (contain [1] = “t”)
- .如果真 (寻找文本 (详细信息.控件类型, contain [2], , 假) = -1)
- 返回 (假)
- .如果真结束
- .判断 (contain [1] = “id”)
- .如果真 (寻找文本 (详细信息.控件ID, contain [2], , 假) = -1)
- 返回 (假)
- .如果真结束
- .判断 (contain [1] = “v”)
- .如果真 (寻找文本 (详细信息.控件值, contain [2], , 假) = -1)
- 返回 (假)
- .如果真结束
- .默认
- .判断结束
- .默认
- 返回 (假)
- .判断结束
- .计次循环尾 ()
- 返回 (真)
复制代码 |
|