• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[技术交流] 【院刊】-【201412期】有种坑,它的名字叫做“类型不匹配xxx” [复制链接]

1#

有种坑,它的名字叫做“类型不匹配xxx”



您所在的用户组无法下载或查看附件


本文按键学院提供技术支持


在写脚本的过程中,是否经常遇到“类型不匹配:xxx” 这样的错误提示。瞪着眼睛找、眯着眼睛找、斜着眼睛找,就是找不到错在哪儿啊有木有?小编分享下,曾经困扰过小编的三个 “类型不匹配” 深坑,以及造成这些深坑的原因。已经知道的童鞋,看一看加深下印象。还没有遇到过的童鞋,看一看,防范于未然~





1号坑


下面的例子要实现开启三个记事本,然后将三个记事本窗口标题分别命名为1 ,2 ,3
可是,运行的结果,为什么只开启了一个记事本呢?后续的操作去哪儿了?



  1. For i= 1 to 3
  2. RunApp "Notepad.exe"
  3. do
  4. hwnd = Plugin.Window.Find(0, "无标题 - 记事本")//获取记事本句柄
  5. Loop while (Hwnd=0)
  6. Do
  7. If stext = i Then
  8. Exit Do
  9. End If
  10. call Plugin.Window.SetText(hwnd,i)
  11. stext = Plugin.Window.GetText(hwnd)
  12. Loop
  13. Next
复制代码


1号坑大解析:

stext = i //错就错在这句代码。
stext是获取窗口标题命令的返回值,是字符串型。
i是整型。
变量类型不同是不能比较的。
所以,字符串 stext 不等于 整型 i ,不满足判断条件。就进入了无限循环,重复的修改第一个开启的记事本的窗口标题。



正确写法:
  1. For i= 1 to 3
  2. RunApp "Notepad.exe"
  3. do
  4. hwnd = Plugin.Window.Find(0, "无标题 - 记事本")//获取记事本句柄
  5. Loop While (Hwnd = 0)
  6. Do
  7. If cint(stext) = i Then
  8. Exit Do
  9. End If
  10. call Plugin.Window.SetText(hwnd,i)
  11. stext = Plugin.Window.GetText(hwnd)
  12. Loop
  13. Next
复制代码




2号坑
使用大漠找字的功能,找到游戏里的数字,判断该数字的大小。
call Lib.大漠注册.register()
//在大漠注册的命令库中已经包含了大漠插件注册,字库加载,大漠对象创建等操作。
并且,经历了1号坑之后小编也学乖了,将字符串变量s转换成了整型。
可是,为什么还是错?


错误提示信息:类型不匹配: 'CINT'
  1. call Lib.大漠注册.register()
  2. s = dm.Ocr(0,0,2000,2000,"9f2e3f-030303",1.0)
  3. If cint(s) > 2000 Then
  4. MessageBox "金额超出"
  5. End If
复制代码

2号坑大解析:

错在这里: cint(s)
用 TracePrint s 将s输出之后,会发现,其实 s 是一个空值
找字没有找到,所以返回了空值。
cint 无法将空值转换成整型的。







3号坑
3号坑和1号坑十分相似,都是变量类型不一样,然后进行大小对比导致的。不同的地方在于,3号坑更加坑。

  1. Dim 数组(1)
  2. 数组(1) = 1
  3. S="2"
  4. If 数组(1) < S Then
  5. MessageBox "啥?这也能比较?"
  6. End If
复制代码
由于事发在很久以前,小编已经找不到原来的代码例子,所以用上面的简化例子。
在原代码中 变量 s 存放的是小编获取到的数据,小编一直认为这个数据是整型的,
所以没有转换类型。
没想到它居然是字符串型。

如果强硬的将字符串型变量和整型变量进行比较,它们是以一种奇怪的规则在比较。
不管数组(1)中是1或者是10000 数组(1) < S 的判断都是成立的。

这句判断欺骗了小编多少感情~甚至还让小编去怀疑其它的代码,经过一遍遍辛苦的排查,让一个爱笑的小编从此都没有了笑容。


可见类型不匹配的坑有多深,小小的类型大大的坑。
童鞋们,如果那些年,你们也有遇到过大大小小的坑,欢迎跟帖分享~









本文按键学院提供技术支持

━═━═━━═━═━━═━═━◥◤━═━═━━═━═━━═━═━

有钱,就是任性!按键学院的导师就是土豪!

按键学院实战班


    已有1评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2023/10/5 18:06:54 执行 审核帖子 操作
    按键学院免费交流群:376122403

    按键学院招生计划
    按键学院系统教程
    2#


    RE:【院刊】-【201412期】有种坑,它的名字叫做“类型不匹配x

    3#

    1111111111111111111111111111

    4#

    gfdag sdg

    熊家班熊叫兽
    5#


    6#

    666666666666666666

    7#

    天天學習,天天向上

    8#

    看看,学学

    QQ836542817
    承接各类脚本
    价格公道,售后质量保证
    9#

    觀看學習

    10#

    ddddddddddd

    11#

    dsfssffdhgfhffhghg

    12#

    111111111111111111111

    13#

    23333333333

    14#

    白白白白

    15#


    16#

    124124124214

    17#

    学习学习!.

    18#

    eeeeeeeeeeeeee

    19#

    woyaotule yijign

    20#

    dsadada

    发新话题 回复该主题