jidantang 发表于 2012-8-24 16:36:11

关于$buuton变量的问题

&buuton1
&buuton2
后面的数字咋样可以用变量代替
$buutton&$ip 用&连接测试失败.
各位大佬有知道的不..麻烦说下 谢谢哈

netegg 发表于 2012-8-24 16:50:11

eval('button' & $i)

邪恶海盗 发表于 2012-8-24 17:40:50

为什么不把整个$ButtonX做变量???

ajian55 发表于 2012-8-24 17:49:45

to 蛋蛋:没看明白蛋蛋你是啥意思,eval 函数似乎是返回变量的值的说,似乎不能用来创建变量的说。

to 楼主:我能想到的办法是,首先预计你的最大可能变量个数,比如100个,然后Dim $button,然后$button = GUICtrlCreateButton(...)
$button = GUICtrlCreateButton(...)
...
$button = GUICtrlCreateButton(...)
...
当然循环创建的话就是For $i = 0 To 99
$button[$i] = GUICtrlCreateButton(...)
Next

netegg 发表于 2012-8-24 18:02:34

本帖最后由 netegg 于 2012-8-24 18:05 编辑

to: 楼上
eval的参数是字符串代表的变量,返回的是变量值,guictrlcreate*返回的不是变量值(多数情况是控件索引)吗?

ajian55 发表于 2012-8-24 18:05:57

本帖最后由 ajian55 于 2012-8-24 18:14 编辑

回复 5# netegg


    好吧,我直接贴帮助中的例子:Dim $a_b = 12
$s = Eval("a" & "_" & "b"); $s 设置为12

$s =Eval("c"); $s = "" 与 @error = 1
我确实不太懂 $s = Eval("a" & "_" & "b") 是不是等同于 $s = $a_b
但是用eval,变量首先必须存在吧,当我需要创建不确定个button时,难不成能 Eval("button"&$i ) = GuiCtrlCreateButton(...) 这么用?

也可能是我误解楼主为什么需要这么用变量了~

netegg 发表于 2012-8-24 18:10:46

本帖最后由 netegg 于 2012-8-24 18:18 编辑

回复 6# ajian55

对呀,"a"&"_"&"b"l把$a_b变成了纯字符串了,但是为什么第二句里的$s会是12
guictrlcreate*只是操作,并把返回值(也就是控件的索引)赋值给前面的变量

最好办的,你按eval做个界面出来,用info看看控件信息就知道了

看lz的意思,是想用循环来操作button后面的数字,创建不同的button

ajian55 发表于 2012-8-24 18:24:32

回复 7# netegg


    话说还是没看懂,难道真能
Eval("button"&$i ) = GuiCtrlCreateButton(...)
   这么用?

我试了下,在我这里这么用会出错的说,如果不能,如何解决定义不确定个 全局相似变量呢?

netegg 发表于 2012-8-24 18:45:15

不好意思,记反了,assign
#include <GUIConstantsEx.au3>

Example()

Func Example()
        Local $msg, $button1, $button2
        GUICreate("My GUI Button") ; 创建一个对话框,并居中显示

        Opt("GUICoordMode", 2)
        For $i = 1 To 3
                Assign('button' & $i, GUICtrlCreateButton($i, 100, 10 + $i * 16, 10, 10))
        Next
        GUISetState() ; 显示有两个按钮的对话框

        ; 运行界面,直到窗口被关闭
        While 1
                $msg = GUIGetMsg()
                Select
                        Case $msg = $GUI_EVENT_CLOSE
                                ExitLoop
                        Case $msg = $button1
                                Run('Notepad.exe') ; 点击按钮 1 打开记事本
                        Case $msg = $button2
                                MsgBox(4096, '测试', '你点击了测试按钮') ; 点击按钮 2 显示一个简单的对话框
                EndSelect
        WEnd
EndFunc   ;==>Example

ajian55 发表于 2012-8-24 18:56:43

回复 9# netegg


    学习了,以前只会用数组,原来还可以这么做。

lxwlxwayy 发表于 2012-8-24 22:40:05

这好像是例子吗

annybaby 发表于 2012-8-24 23:59:35

回复 9# netegg

蛋蛋兄的代码总能让人眼前一亮,赏心悦目~~
学习了~

jidantang 发表于 2012-8-25 18:28:08

回复 4# ajian55


谢谢谢谢

jidantang 发表于 2012-8-25 18:28:32

回复 9# netegg

谢谢 谢谢
页: [1]
查看完整版本: 关于$buuton变量的问题