按公式查找,最强大的查找方式!例如,用“内存转储”存储三份内存。 分别代表同一对象的三个不同的状态。 这三个状态命名为M1、M2、M3。 在M1和M3状态中,生命条的长度相等。 用公式“(M1<>M2)and(M2<>M3)and(M1=M3)”查找。 你就可以找到生命条的地址。
所谓的公式是一个逻辑表达式,它包含下列内容:
- 用括号()括起来的其他表达式。
- 变量(M1、M2等等)——对象的状态(内存转储或地址/值的集合)。
- 一组变量,如M[2,4]——对象在第2步和第4步时的状态。例如 M1 <> M[2,4] 等价于 (M1 <> M2) and (M1 <> M4)
- 数值(100,-15,Ah,11.2)——只有100<=M1<=300这种表达式能包含两个数值
- 文本('Boss',"Good")——仅用于M1='Boss'这种表达式
- 条件(“<”、“>”、“=”等等)——例如 M1=1、 M2>=100、 1<=M3<=2,或对象的两个状态的比较M1>M2、M1<>M2。
- 数学运算符(“+”、“-”)——仅用于M2>=M1+100这种表达式。
- AND运算符——交集运算。表达式1和表达式2都成立的地址集合。
- OR运算符——并集运算。表达式1或表达式2有一个成立的地址集合。
公式中可以含有任意多对括号。 括号里的内容必须也是一个逻辑表达式。表达式的结果必须是地址/值的集合。
注意!AND、OR运算符返回的是地址的集合,不能用于值的比较。因此这种运算必须在最后执行。例如,100<=(M1 and M2)<=300 ——将会返回错误的结果。因为AND运算后不能确定每个地址对应的值。正确的写法是(100<=M1<=300)and(100<=M2<=300)。
注意!M1>M2、 M2<>M1这种表达式永远返回第一个变量中地址的值。例如,(M1<>M2)>0 等价于 (M1>0)<>M2
M1=M2这种表达式返回正确的地址/值,因为条件本来就是值相等。例如,(M1=M2)>0 等价于 (M1>0)=(M2>0)
假设你要查找准确值,你有三个状态,对应的值分别是15000、14460、15100,则应使用如下公式:(M1=15000)and(M2=14460)and(M3=15100)
假设你要查找有范围的数值, 你有两个状态,对应的值约为100、300。则应使用如下公式:(99.9<=M1<=100.1)and(199.9<=M2<=200.1)
假设你要查找无法确定的数值(生命条),你有4个状态,对应的生命值约为100%、80%、60%、90%,则应使用如下公式:(M1 > M2)and(M1 > M3)and(M1 > M4)and(M2 > M3)and(M2 < M4)and(M3 < M4)
假设你要查找加密的数值,你有4个状态,分别对应4个不同的数值,则应使用如下公式:
(M1 <> M2)and(M1 <> M3)and(M1 <> M4)and(M2 <> M3)and(M2 <> M4)and(M3 <> M4)
或这种结构
(M1 <> M[2,3,4])and(M2 <> M[3,4])and(M3 <> M4)
另外:推荐在查找之前选中 使用“撤销/重做查找”功能 这个选项。