找回密码
 加入
搜索
查看: 3630|回复: 7

[AU3基础] 一个很奇怪的大小判断(已解决)

  [复制链接]
发表于 2011-4-10 01:21:40 | 显示全部楼层 |阅读模式
本帖最后由 papapa314 于 2011-4-10 01:53 编辑

$Form1 = GUICreate("配置信息", 395, 99, 274, 222)

$Input1 = GUICtrlCreateInput("8", 144, 24, 89, 21)

$Button1 = GUICtrlCreateButton("开始", 120, 56, 137, 33)

GUISetState(@SW_SHOW)


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
            Case $Button1
                        $string="大家好20大家好"
                        $value=StringRegExp($string,"大家好(\d+)大家好",3)
                        MsgBox(0,0,$value[0])
                        MsgBox(0,0,GUICtrlRead($Input1))
                        MsgBox(0,0,$value[0]<=GUICtrlRead($Input1))
        EndSwitch
WEnd

按理说, $value[0]=20,GUICtrlRead($Input1)=8
$value[0]<=GUICtrlRead($Input1) 应该为false才对,但程序输出的却是True!匪夷所思。希望各位指点下。
发表于 2011-4-10 01:31:27 | 显示全部楼层
没错,因为这是字符串比对。"20" <= "8" 当然是对的
比对数值需要 MsgBox(0,0,Number($value[0])<=Number(GUICtrlRead($Input1)))
 楼主| 发表于 2011-4-10 01:51:27 | 显示全部楼层
回复 2# afan

先谢谢afan版主。

我一开始也是那么想的,要把字符串转换成数字类型。但是在用au3的过程中我发现au3的数据类型并不是那么严格,其他比较严格的语言是需要把字符串先转化成数值,而au3不需要。比如MsgBox(0,0,$value[0]+GUICtrlRead($Input1))这个就能输出28,而不是208.
同时我也用vb.net测试了下, MessageBox.Show(TextBox1.Text + TextBox2.Text),确实是输出208而不是28.
可能au3在相加的时候会自动判断数据类型,而在比较大小的时候却不能。

问题解决了,再次谢谢版主。
发表于 2011-4-10 09:09:58 | 显示全部楼层
新手学习中
发表于 2011-4-11 00:51:34 | 显示全部楼层
回复 3# papapa314
从根本上讲,auto是没有变量类型的
发表于 2011-4-12 09:51:56 | 显示全部楼层
学习中,谢谢
发表于 2011-4-12 09:51:58 | 显示全部楼层
学习中,谢谢
发表于 2012-5-17 10:23:59 | 显示全部楼层
围观。。。只学不说话
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 03:19 , Processed in 0.071399 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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