【疑惑】socket协议的脚步,关联函数和转义符号的使用问题
本帖最后由 夏日摸摸茶 于 2011-11-19 10:36 编辑目的是对socket协议的脚步中的buf数据进行关联,如下:
data.ws
recvbuf5 109
"{\"onlineEngineers\":1,\"freeEngineers\":1,\"waitingUsers\":0,\"servicingU"
"sers\":0,\"position\":1,\"cmd\":\"CMD_ACD_INFO\"}"
想要对onlineEngineers\":和,\"freeEngineers之间的1进行关联:
(1)当使用
lrs_save_searched_string("socket0",LRS_LAST_RECEIVED,"Allnum","LB=:","RB=,\"free",1,0,-1);时,
在未对双引号和\进行转义时,返回:
Action.c(25): lrs_save_searched_string(socket0, get_last_received_buffer, Allnum, LB=:, RB=,, 1, 0, -1)
Action.c(25): Notify: Saving Parameter "Allnum = 1".
(2)当使用
lrs_save_searched_string("socket0",LRS_LAST_RECEIVED,"Allnum","LB=:","RB=,\\\"free",1,0,-1);时,
在已对双引号和\进行转义时,返回:
Action.c(25): fiCalcSearchedStringLength: Right boundary not found
Action.c(25): Error : Unable to save to parameter lrs_save_searched_string :. Error code : 9015.
疑问:
未对双引号和\进行转义时,能回放通过,已进行转义后,提示找不到右边界,为什么呢???是转义符号使用的有问题?? 建议你把左右边界写的到位一点 本帖最后由 夏日摸摸茶 于 2011-11-19 14:57 编辑
回复 2# 云层
最开始左右边界都挺长的,但都会同时包含\和",而且这两个还挨着,用转义的话,得这样写 \\\"才能表示buf中的\",但这样写就报错了,后来我排错的时候把左边界弄短了,用右边界来测试,结果还是没找到原因。 继续求助。。。。。。。。。。
对\" 进行转义,由于需要转义的两个字符挨着,使用\\\" 难道有问题??? 原因:
真正的BUF 里面的字符串是这样的 "onlineEngineers":1,"freeEngineers"
所以只需考虑在这个字符串上转义,不必考虑 LR 给你展现的报文,那是经过转义后的
即:使用
lrs_save_searched_string("socket0",LRS_LAST_RECEIVED,"Allnum","LB=:","RB=,\"free",1,0,-1);就能够成功关联;
总结:
在所有socket脚本的buf内容中,当要指定关联函数的左右边界时,忽略buf中显示的 \,只对双引号进行转义。
另外:
任何脚本中的\ 不需要转义
任何脚本中的" 都需要转义 {:3_69:} 有帮助,谢谢分享
页:
[1]