关于execute的使用[已解决]
本帖最后由 gto250 于 2012-3-30 20:37 编辑$str='Func ss()'&@CRLF&'$a=InetRead("http://www.baidu.com")'&@CRLF&'$c=BinaryToString($a,4)'&@CRLF&'Return $c'&@CRLF&'EndFunc'
MsgBox(0,"",Execute($str))
我想用Execute对au3语句进行处理,像上面的代码就不能成功!
想问下为什么!
其实并未解决,不过应该也没有答案了,所以结贴 Execute 只能执行一行表达式 本帖最后由 lixiaolong 于 2012-3-29 01:17 编辑
回复 1# gto250
用法不对吧?
$str='Func ss()'&@CRLF&'$a=InetRead("http://www.baidu.com")'&@CRLF&'$c=BinaryToString($a,4)'&@CRLF&'Return $c'&@CRLF&'EndFunc'
MsgBox(0,"",Execute('$str'))
$str = 'Func ss()' & @CRLF & '$a=InetRead("http://www.baidu.com")' & @CRLF & '$c=BinaryToString($a,4)' & @CRLF & 'Return $c' & @CRLF & 'EndFunc' & @CRLF & @CRLF
MsgBox(0, "", Execute('$str&$str'))
老实说, 看了帮助文件, 对这函数的功用还是一点也不懂! 本帖最后由 lixiaolong 于 2012-3-29 10:48 编辑
回复 4# user3000
我的理解是有时可以精简代码.
$a = 1
$b = '你好'
$c = '我叫小龙'
$v = $a + 1
$s = $b & $c
MsgBox(3, "$v = $a + 1", $v)
MsgBox(3, '$a += 1', $a += 1);出错
MsgBox(3, 'Execute("$a+1")', Execute("$a+1"))
MsgBox(3, "$s = $b & $c", $s)
MsgBox(3, 'Execute("$b&$c")', Execute("$b&$c"))
Execute主要用于数学求值吧,用于对字符串进行处理个人的感觉意义不是很大。
如5楼的12行,写成如下似乎简练点:MsgBox(3, "合并$b和$c")', $b&$c)。 回复 6# shqf
我同意,应该是这样. 这函数等于是个鸡肋函数, 可有可无? 回复 8# user3000
我想应该是非常有用的,就是现在想不出来它的用处... 本帖最后由 afan 于 2012-3-29 13:30 编辑
Execute 一般只用作数学求值。这一点,它的作用很大。
当然,它也能执行“单行、表达式结果为字符串形式的”表达式。但实际应用面比较窄,只在“表达式字符串未知”的情况下有点意义,比如读取Edit框内的某行内容并执行。这一点,在我看来几乎没用。(注,如果编辑框的内容是“1 + 1 * 2”之类的,那它还是属于数学求值…) 回复 10# afan
大概明白了用法,可以做计算器~
#include <GUIConstantsEx.au3>
Opt("GUICoordMode", 1)
GUICreate(" GUI 接收文件的输入控件", 320, 80, -1, -1)
$in1 = GUICtrlCreateInput("", 10, 5, 100, 20, 0x2000)
$in2 = GUICtrlCreateInput("", 10, 35, 100, 20, 0x0800)
$btn2 = GUICtrlCreateButton("+", 120, 30, 20, 20)
$btn3 = GUICtrlCreateButton("*", 145, 30, 20, 20)
$btn4 = GUICtrlCreateButton("-", 170, 30, 20, 20)
$btn5 = GUICtrlCreateButton("/", 195, 30, 20, 20)
$btn6 = GUICtrlCreateButton("C", 220, 30, 20, 20)
$btn = GUICtrlCreateButton("=", 245, 30, 20, 20)
Local $num, $x = 100
For $i = 1 To 9
$num[$i] = GUICtrlCreateButton($i, $x + 20 * $i, 5, 20, 20)
Next
GUISetState()
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Switch $msg
Case $btn
GUICtrlSetData($in2, Execute(GUICtrlRead($in1)))
Case $btn6
GUICtrlSetData($in1, '')
Case $btn2, $btn3, $btn4, $btn5
GUICtrlSetData($in1, GUICtrlRead($in1) & GUICtrlRead($msg))
Case $num To $num
GUICtrlSetData($in1, GUICtrlRead($in1) & GUICtrlRead($msg))
EndSwitch
WEnd
回复gto250
用法不对吧?
lixiaolong 发表于 2012-3-29 01:12 http://www.autoitx.com/images/common/back.gif
原来Execute和其他函数有些不一样,一般其他函数都是对变量不用加引号,而这个函数却要加引号 回复 12# zldfsz
这些函数我想用好了肯定省不少功夫. 本帖最后由 netegg 于 2012-3-29 15:35 编辑
回复 12# zldfsz
execute是执行字符串,有点像系统里的运行框
和run,shellexecute的意思很类似,只不过用的地方不同而已 同意楼上的观点,目前想不到有什么特殊的情况用execute()有优势。
页:
[1]
2