一个很奇怪的大小判断(已解决)
本帖最后由 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!匪夷所思。希望各位指点下。 没错,因为这是字符串比对。"20" <= "8" 当然是对的
比对数值需要 MsgBox(0,0,Number($value)<=Number(GUICtrlRead($Input1))) 回复 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在相加的时候会自动判断数据类型,而在比较大小的时候却不能。
问题解决了,再次谢谢版主。 新手学习中 回复 3# papapa314
从根本上讲,auto是没有变量类型的 学习中,谢谢 学习中,谢谢 围观。。。只学不说话
页:
[1]