papapa314 发表于 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)
                        MsgBox(0,0,GUICtrlRead($Input1))
                        MsgBox(0,0,$value<=GUICtrlRead($Input1))
        EndSwitch
WEnd

按理说, $value=20,GUICtrlRead($Input1)=8
$value<=GUICtrlRead($Input1) 应该为false才对,但程序输出的却是True!匪夷所思。希望各位指点下。

afan 发表于 2011-4-10 01:31:27

没错,因为这是字符串比对。"20" <= "8" 当然是对的
比对数值需要 MsgBox(0,0,Number($value)<=Number(GUICtrlRead($Input1)))

papapa314 发表于 2011-4-10 01:51:27

回复 2# afan

先谢谢afan版主。

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

问题解决了,再次谢谢版主。

kadingxiaodi 发表于 2011-4-10 09:09:58

新手学习中

netegg 发表于 2011-4-11 00:51:34

回复 3# papapa314
从根本上讲,auto是没有变量类型的

lsszmj 发表于 2011-4-12 09:51:56

学习中,谢谢

lsszmj 发表于 2011-4-12 09:51:58

学习中,谢谢

xyhqqaa 发表于 2012-5-17 10:23:59

围观。。。只学不说话
页: [1]
查看完整版本: 一个很奇怪的大小判断(已解决)