gto250 发表于 2012-3-28 23:43:17

关于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语句进行处理,像上面的代码就不能成功!
想问下为什么!

其实并未解决,不过应该也没有答案了,所以结贴

afan 发表于 2012-3-29 00:35:59

Execute 只能执行一行表达式

lixiaolong 发表于 2012-3-29 01:12:23

本帖最后由 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'))

user3000 发表于 2012-3-29 08:26:36

老实说, 看了帮助文件, 对这函数的功用还是一点也不懂!

lixiaolong 发表于 2012-3-29 10:38:45

本帖最后由 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"))

shqf 发表于 2012-3-29 10:56:54

Execute主要用于数学求值吧,用于对字符串进行处理个人的感觉意义不是很大。
如5楼的12行,写成如下似乎简练点:MsgBox(3, "合并$b和$c")', $b&$c)。

lixiaolong 发表于 2012-3-29 11:01:33

回复 6# shqf

我同意,应该是这样.

user3000 发表于 2012-3-29 11:16:57

这函数等于是个鸡肋函数, 可有可无?

lixiaolong 发表于 2012-3-29 12:57:45

回复 8# user3000

我想应该是非常有用的,就是现在想不出来它的用处...

afan 发表于 2012-3-29 13:22:45

本帖最后由 afan 于 2012-3-29 13:30 编辑

Execute 一般只用作数学求值。这一点,它的作用很大。
当然,它也能执行“单行、表达式结果为字符串形式的”表达式。但实际应用面比较窄,只在“表达式字符串未知”的情况下有点意义,比如读取Edit框内的某行内容并执行。这一点,在我看来几乎没用。(注,如果编辑框的内容是“1 + 1 * 2”之类的,那它还是属于数学求值…)

lixiaolong 发表于 2012-3-29 14:11:58

回复 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

zldfsz 发表于 2012-3-29 14:26:37

回复gto250

用法不对吧?
lixiaolong 发表于 2012-3-29 01:12 http://www.autoitx.com/images/common/back.gif


    原来Execute和其他函数有些不一样,一般其他函数都是对变量不用加引号,而这个函数却要加引号

lixiaolong 发表于 2012-3-29 15:10:43

回复 12# zldfsz

这些函数我想用好了肯定省不少功夫.

netegg 发表于 2012-3-29 15:34:04

本帖最后由 netegg 于 2012-3-29 15:35 编辑

回复 12# zldfsz

execute是执行字符串,有点像系统里的运行框
和run,shellexecute的意思很类似,只不过用的地方不同而已

xms77 发表于 2012-3-29 16:24:52

同意楼上的观点,目前想不到有什么特殊的情况用execute()有优势。
页: [1] 2
查看完整版本: 关于execute的使用[已解决]