找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5232|回复: 7

[已回复] 如何将null重新赋值为0

[复制链接]

15

主题

15

回帖

45

积分

小学生

鲜花
0
猫粮
119
发表于 2019-8-21 00:43:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 脚本小学弟 于 2019-8-22 12:03 编辑

利用安卓版的ocr识别做了一个小程序

在挂机过程中识别次数是否到指定次数,但是由于挂机过程中,游戏会有转场动画

当转场时,识别区域的数字就会消失,此事ocr就无法获取到识别内容,就会将识别的内容赋值为null

当null时,程序会直接报错,并终止

这里设定了一个强制转换的,如果识别为null,则将其强制赋值为0,但是这个强制赋值好像不成功。

不知道这样写是否正确!

代码如下:


[按键精灵] 纯文本查看 复制代码
SetDictEx(0, "Attachment:剧情副本次数数字.txt")
UseDict(0)        

Dim x    //定义x为识别的数字
        
        Do
                x = Ocr(381, 353, 452, 386, "FFFFFF-505050", 1)   //在指定区域识别数字赋值给x
                
                If x = null Then   //判断x是否成功识别,如果识别未成功,则将其赋值为0      
                        TracePrint "x为空值"
                        x = 0
                        TracePrint x
                        Else 
                        TracePrint "识别成功" //如果识别成功,将其转换成int类型,参与下方的do循环
                        x=int(x)
                End If
                
                TracePrint "当前战斗次数为:",x
                
                If x > 10 Then 
                        Exit Do
                End If
                Delay 4000
        Loop


我弄了一个折中的办法,不过还是有异常报错。

ocr识别是在特定的页面才会执行
[按键精灵] 纯文本查看 复制代码
do
    If 在特定页面 Then
        执行OCR操作
        If OCR结果>10 Then
           执行退出副本操作
        End If
        Exit Do
    End If
delay  4000
loop


这里的延迟时间会影响到识别错误的问题,如果时间过快,ocr识别就会识别到null,这个程序就直接报错。



楼主热帖
  • 打卡等级:拜师学艺

0

主题

25

回帖

25

积分

按键电脑班学员

鲜花
0
猫粮
720
发表于 2019-8-21 07:28:23 | 显示全部楼层
当转场为空时.你打印下X值.看看是不是Null.有时可能会识别成其他的东西.

15

主题

15

回帖

45

积分

小学生

鲜花
0
猫粮
119
 楼主| 发表于 2019-8-21 14:55:58 | 显示全部楼层
szmy 发表于 2019-8-21 07:28
当转场为空时.你打印下X值.看看是不是Null.有时可能会识别成其他的东西.

这里我在电脑上操作测试过了

当ocr识别未成功时,打印x,是null
当判断是null时,强制将x赋值为0,再打印x时,还是null

然后x=null还是参与了下方的数据大小比较,结果程序报错终止。

不知道是不是强制赋值为0这里的代码写错了,还是其他的问题导致的。

0

主题

12

回帖

12

积分

按键电脑&手机班学员

鲜花
0
猫粮
910
发表于 2019-8-22 09:26:32 | 显示全部楼层
ocr识别的返回值是字符串。你加一个clnt转换

15

主题

15

回帖

45

积分

小学生

鲜花
0
猫粮
119
 楼主| 发表于 2019-8-22 11:55:55 | 显示全部楼层
刘某某 发表于 2019-8-22 09:26
ocr识别的返回值是字符串。你加一个clnt转换

我用的int强制转换的,

cint的效果是一样的吗?
  • 打卡等级:拜师学艺

0

主题

25

回帖

25

积分

按键电脑班学员

鲜花
0
猫粮
720
发表于 2019-8-22 15:13:09 | 显示全部楼层
ocr的结果是字符串.
可以换个角度去考虑.检查字符串长度呢?

0

主题

12

回帖

12

积分

按键电脑&手机班学员

鲜花
0
猫粮
910
发表于 2019-8-22 22:13:13 | 显示全部楼层
脚本小学弟 发表于 2019-8-22 11:55
我用的int强制转换的,

cint的效果是一样的吗?

int是数值型取整.cint是将数据转换为数值型.效果不一样的

15

主题

15

回帖

45

积分

小学生

鲜花
0
猫粮
119
 楼主| 发表于 2019-8-22 23:58:08 | 显示全部楼层
szmy 发表于 2019-8-22 15:13
ocr的结果是字符串.
可以换个角度去考虑.检查字符串长度呢?

这个可以试试看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫猫编程学园

GMT+8, 2024-12-23 08:40

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表