找回密码
 加入
搜索
查看: 7674|回复: 22

[AU3基础] 关于execute的使用[已解决]

 火.. [复制链接]
发表于 2012-3-28 23:43:17 | 显示全部楼层 |阅读模式
本帖最后由 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语句进行处理,像上面的代码就不能成功!
想问下为什么!

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

评分

参与人数 1金钱 +10 收起 理由
afan + 10

查看全部评分

发表于 2012-3-29 00:35:59 | 显示全部楼层
Execute 只能执行一行表达式
发表于 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'))

评分

参与人数 1金钱 +30 收起 理由
lpxx + 30 学习了

查看全部评分

发表于 2012-3-29 08:26:36 | 显示全部楼层
老实说, 看了帮助文件, 对这函数的功用还是一点也不懂!
发表于 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"))

评分

参与人数 1金钱 +20 收起 理由
user3000 + 20 谢谢解惑~

查看全部评分

发表于 2012-3-29 10:56:54 | 显示全部楼层
Execute主要用于数学求值吧,用于对字符串进行处理个人的感觉意义不是很大。
如5楼的12行,写成如下似乎简练点:MsgBox(3, "合并$b和$c")', $b&$c)。
发表于 2012-3-29 11:01:33 | 显示全部楼层
回复 6# shqf

我同意,应该是这样.
发表于 2012-3-29 11:16:57 | 显示全部楼层
这函数等于是个鸡肋函数, 可有可无?
发表于 2012-3-29 12:57:45 | 显示全部楼层
回复 8# user3000

我想应该是非常有用的,就是现在想不出来它的用处...
发表于 2012-3-29 13:22:45 | 显示全部楼层
本帖最后由 afan 于 2012-3-29 13:30 编辑

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

评分

参与人数 3金钱 +50 贡献 +7 收起 理由
shqf + 10
user3000 + 20 + 5 谢谢解惑, 有点头绪了~
lixiaolong + 20 + 2 学习了!

查看全部评分

发表于 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[10], $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[1] To $num[9]
                        GUICtrlSetData($in1, GUICtrlRead($in1) & GUICtrlRead($msg))
        EndSwitch
WEnd
发表于 2012-3-29 14:26:37 | 显示全部楼层
回复  gto250

用法不对吧?
lixiaolong 发表于 2012-3-29 01:12



    原来Execute和其他函数有些不一样,一般其他函数都是对变量不用加引号,而这个函数却要加引号
发表于 2012-3-29 15:10:43 | 显示全部楼层
回复 12# zldfsz

这些函数我想用好了肯定省不少功夫.
发表于 2012-3-29 15:34:04 | 显示全部楼层
本帖最后由 netegg 于 2012-3-29 15:35 编辑

回复 12# zldfsz

execute是执行字符串,有点像系统里的运行框
和run,shellexecute的意思很类似,只不过用的地方不同而已
发表于 2012-3-29 16:24:52 | 显示全部楼层
同意楼上的观点,目前想不到有什么特殊的情况用execute()有优势。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-29 17:12 , Processed in 0.099409 second(s), 31 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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