TC官方合作论坛

标题: 求指点 找字经常弹出类型不匹配 [打印本页]

作者: tao201309    时间: 2013-11-10 00:14
标题: 求指点 找字经常弹出类型不匹配
变量 线程句柄,x,y,间隔1,间隔2,间隔3,间隔4,间隔5,间隔6,间隔7,间隔8,间隔9,间隔10
变量 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,intX,intY,a15,a16,hwnd,a17
变量 a18,a19,a20
ts=com("ts.tssoft")
功能 初始化()
    是否成功=辅助.注册插件("rc:TSPlug.dll",真)
    如果(是否成功)
        调试输出("插件已注册")
    否则
        调试输出("插件未注册")  
    如果结束
功能结束
功能 开始_点击()
    hwnd=ts.GetMousePointWindow()
    ts.BindWindow(hwnd,"dx2","dx","dx",101)
    辅助.等待(1600)
    ts.DownCpu(100)
    ts.EnableRealKeypad(1)
    ts.SetMouseDelay("dx",10)
    ts.MoveTo(600,316)
系统.设置路径("D:\\斗战神游戏\\斗战神游戏\\资源")
功能 寻路()
    a,b,int1X,int2Y
    ts.KeyDownChar("delete")
    辅助.等待(760)
    ts.KeyUpChar("delete")
    ts.SetDict(0,"坐标字库0.txt")
    循环(真)
        a=ts.Ocr(1028,20,1055,38,"de7139-000000",1.0)
        辅助.等待(80)
        如果(a<168)
            ts.KeyDownChar("d")
        否则
            ts.KeyUpChar("d")
            
            跳出
        如果结束
    循环结束
功能结束  
经常会弹出类型不匹配 然后就脚本停止了   请问是没找到字导致的还是其他原因所造成的  或者有其他更好的语句来实现这个目的
作者: cylhb    时间: 2013-11-10 01:16
因为出在  如果(a<168)  这一句上
当你a不为整数时,这比较判断就会出错。最好就是在比较之前,先判断a是否为整形。。
作者: tao201309    时间: 2013-11-10 01:18
怎么判断是不是整数型 给个例子?
作者: tao201309    时间: 2013-11-10 01:25
取值是坐标 而且绝对整数  因为字库里面就只有0-9的数字 没有标点符号
作者: tao201309    时间: 2013-11-10 01:26
我怀疑是找字没找到造成的  请问有什么方法解决
作者: tao201309    时间: 2013-11-10 01:26
不是一直不可以 而是偶尔会来这么一出
作者: mzbqhbc    时间: 2013-11-10 01:55
本帖最后由 mzbqhbc 于 2013-11-10 01:57 编辑

如果你开启了多个线程 ,但是多个线程都使用同一个TS的对象名,就有可能出现这种情况,解决办法就是不同线程,定义不同的插件对象
当然如果根本就没有数字,那没找到数字,也会数据类型不匹配

作者: dongyijun1979    时间: 2013-11-10 02:13
        a=ts.Ocr(1028,20,1055,38,"de7139-000000",1.0)
        辅助.等待(80)
        如果(a<168)


Ocr返回的是:识别到的字符串

你拿识别到的字符串去和168做大小比较,类型能匹配?

作者: dongyijun1979    时间: 2013-11-10 02:18
ts=com("ts.tssoft")

定义全局插件对象时最好不要这样子?

你就写个
  1. ts
复制代码

或者
  1. 变量 ts
复制代码


而在初始化代码中注册完插件对象后其后紧跟

  1. ts=com("ts.tssoft")
复制代码





作者: tao201309    时间: 2013-11-10 11:29
我肯定也是拿数字去比较的 因为我找的坐标  所以都是纯数字 坐标字库里就只有0-9个  10个字而已 想识别到其他的也不行
  还有就 我说只是偶尔 不是一只不行  我想问题应该是绑定 刷新游戏  资源占用大的问题
作者: bocai7821    时间: 2013-11-10 15:42
你这种情况很正常的
因为你取字的时候有可能取到空
或者取到到逗号或者斜杠的字符
出现以上2种情况就会类型不匹配
,取游戏坐标时经常出现,游戏坐标位置会变
10和1000的坐标就差2个数字的位置
有时候7 会当成"/"来判断
如果去准备547/547
取到的字就会成"54//54/"
分割后就会出类型不匹配

作者: heshilove2    时间: 2013-11-10 16:44
bocai7821 发表于 2013-11-10 15:42
你这种情况很正常的
因为你取字的时候有可能取到空
或者取到到逗号或者斜杠的字符

请问这种情况一般怎么解决
作者: cylhb    时间: 2013-11-10 18:09
功能原型:  类型.是否为整型(str,type=0)  
功能说明:  可以转整型返回true,否则返回false,type:0表示参数1为十进制,1表示参数1为十六进制  
功能举例:  help.messagebox(类型.是否为整型("15546"))  






欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1