为了帮助大家看懂珊瑚虫配置文件 CoralQQ.ini 中的代码,现试解读其中最常被大虾们修改的部分代码,不对之处,请大虾们指正。 1、参数 所有参数区分大小写。部分参数所代表的意义如下: “%A”——对方所在地区。 “%a”——对方详细地址。 “%I”——对方IP地址,无IP地址时为“0.0.0.0”。 “%N”——对方昵称。 “%n”——对方QQ号。 “%o”——对方在线状态返回码之一(检测对方是否上线。1:在线,0:离线或隐身)。 “%P”——对方端口号。 “%p”——换行。 “%s”——对方在线状态返回码之二(检测对方上线以后的状态。10:在线,20:离线或隐身,30:离开)。 “%t”——当前系统时间。 “%V”——对方QQ版本号,没有测到版本号时为“<移动QQ>”。 2、运算符 “;”——注释符,用于帮助读懂代码,其后整行的字符不视为代码,不执行。 “=”——关系运算符,用于符号和值之间数值比较。 “()”——语句范围符,用于限定关系式的范围。它必须成对使用,否则将出错。 “?”——判断符,用于判断逻辑关系。 “:”——转折符,用于逻辑关系的转折。 逻辑关系采用 x?y:z 格式的三目运算,即,当 x 成立时结果为 y,否则结果为 z。 3、代码解读 下面以“消息对话框传统 IP 信息格式”为例说明代码的应用。 IpFormat=(%I=0.0.0.0)?(%o=0?(%V=<移动QQ>?%N 离线%p无法显示其所在地区、IP地址和QQ版本号:%N 隐身上线或已下线%p%V):(%s=10?%N 在线%p:%N 离开%p)暂时未能显示其所在地区和IP地址%p%V):(%s=20?%N 正在隐身或已下线%p:(%s=10?%N 在线%p:%N 离开%p))%A(%a=()?:%a)%p%I(%P=0?::%P)%V 上述代码看似复杂,其实只是简单的三目运算,简化如下,看得清楚些: IpFormat=(%I=0.0.0.0)?(%o=0?(%V=<移动QQ>?%N 离线:%N 隐身上线或已下线):%s=10?%N 在线:%N 离开):%s=20?%N 正在隐身或已下线:(%s=10?%N 在线:%N 离开) 第一层是(%I=0.0.0.0)? 部分,就是判断有没有 IP 地址,是一个三目运算,有如下两种情况: (1)没有 IP,就是 %I=0.0.0.0 成立,这时执行以下代码:“%o=0?(%V=<移动QQ>?%N 离线:%N 隐身上线或已下线):%s=10?%N 在线:%N 离开”,具体内容下面再做解释。 (2)有 IP,就是 %I=0.0.0.0 不成立,这时执行剩下的代码:“%s=20?%N 正在隐身或已下线:(%s=10?%N 在线:%N 离开)”。 第二层之一是 %o=0? 部分,就是判断对方是否上线,仍是一个三目运算,也有两种情况: (1)对方没上线,就是 %o=0 成立,这时执行以下代码:“%V=<移动QQ>?%N 离线:%N 隐身上线或已下线”。 (2)对方上线,就是 %o=0 不成立,这时执行以下代码:“%s=10?%N 在线:%N 离开”。 第二层之二是 %s=20? 部分,就是判断对方上线后的情况,仍是一个三目运算,也有两种情况: (1)对方不在线,就是 %s=20 成立,这时要么对方隐身,要么对方已经下线了,所以显示对方“正在隐身或已下线”。 (2)对方在线,就是 %s=20 不成立,这时继续执行“%s=10?%N 在线:%N 离开”。 第三层之一是 %V=<移动QQ>? 部分,就是判断对方是否有 QQ 版本号,%V=<移动QQ>成立时,说明对方离线;%V=<移动QQ>不成立时,说明对方隐身上线或已下线。 第三层之二是 %s=10? 部分,就是判断对方是否在线,%s=10 成立时,说明对方在线;%s=10 不成立时,说明对方离开。 未简化前的代码只是在判断了相应的在线状态后增加了显示所在地区、IP 地址和 QQ 版本号等内容,用 %p 换行显示。 至于为什么要这样判断对方在线状态,有空时另外再做解释。