找回密码
 加入
搜索
查看: 2740|回复: 12

菜鸟问几个很基础的问题。请指点一下。

[复制链接]
发表于 2008-7-29 16:25:23 | 显示全部楼层 |阅读模式

第一个是 ExitLoop 
帮助文件里说这个可以用来跳出 While 和For 循环。
那么我想问一下,
第一个问题是,有什么命令可以用来跳出 IF...EndIF 的呢?
第二个问题是,有什么命令可以直接跳出子程序么?(Func......EndFunc)

第三个问题是,赋值命令往往比较多也比较短,能不能把多个这样的命令写成一排,如果可以,Autoit下用什么做分隔符?
比如:
$QQ=1
$WW=2
$EE=3
$RR=4
$TT=5
我想写成这样就比较方便检查一些:
$QQ=1  $WW=2   $EE=3  $RR=4  $TT=5
但是我不知道在Autoit下用什么符号把他们分隔开?

上面的问题请高手指定一下,谢谢!



[ 本帖最后由 gaoyuan22 于 2008-7-31 18:27 编辑 ]
发表于 2008-7-29 20:40:24 | 显示全部楼层
你的问题实在太多了。。。
 楼主| 发表于 2008-7-29 22:17:18 | 显示全部楼层

回复 2# sanhen 的帖子

老大,,,
我刚才学用autoit几天,不太懂,周围也没有用这个的朋友。
无奈只好问一下拉。
对不起,麻烦了!
希望高手能帮我一下,
我学会了,一定会给其他新学的人讲的。。
 楼主| 发表于 2008-7-29 22:18:08 | 显示全部楼层

回复 2# sanhen 的帖子


先拜谢了!

[ 本帖最后由 gaoyuan22 于 2008-7-29 22:19 编辑 ]
发表于 2008-7-30 08:58:05 | 显示全部楼层
<P>第一个问题实在不知怎么回答你好,跳过.</P>
<P>&nbsp;</P>
<P>第二个问题:</P>
<P>&nbsp;</P>
<P>Return</P>
<P>&nbsp;</P>
<P>第三个问题(例):</P>
<P>&nbsp;</P>
<P>Dim $I = 1 , $J = 2 , $K =3 ,$L[5] = [0,1,2,3,4]</P>
<P>&nbsp;</P>
 楼主| 发表于 2008-7-30 14:41:50 | 显示全部楼层

回复 5# 漠北雪~狼 的帖子

感谢楼上的“漠北雪~狼”斑竹大人。

我解释一下第一个问题的想法。

IF...Then...EndIF
本来就是个判断不需要跳出也可以自己结束的。
很多脚本工具里都有这样的判断结构。

我在使用中发现,有时候,这样的判断在IF之下,会有比较多比较复杂的内容。
往往在这些内容进行时,也需要判断其他一些条件是不是成立,并决定是否立即跳出IF
当然,如果IF...Then...EndIF 中间不加其他跳出,改变一下逻辑结构,应该也能实现同样功能。
但这样可能会复杂许多。
比如下面这样例子:(ExitIf 是我杜撰的,代表跳出IF语句)

If  IniRead(@ScriptDir&"\SETUP.ini","当前状态", "状态一", "")=0 Then
    Send("{1}") 
    Sleep(1000)
    Send("{1}") 
    Sleep(1000)
    If  IniRead(@ScriptDir&"\SETUP.ini","当前状态", "状态二", "")=1 Then ExitIf
    Send("{2}") 
    Sleep(1000)
    Send("{2}") 
    Sleep(1000)
    While 1=1
        If  IniRead(@ScriptDir&"\SETUP.ini","当前状态", "状态一", "")=1 Then ExitIf
        If  IniRead(@ScriptDir&"\SETUP.ini","当前状态", "状态二", "")=1 Then ExitLoop
        Send("{3}") 
        Sleep(1000)
        Send("{3}") 
        Sleep(1000)
    WEnd
        Send("{4}") 
        Sleep(1000)
        Send("{4}") 
        Sleep(1000)
EndIF        

读取的INI文件键值,正被另外的进程根据当时实际情况改写。
而状态一和二的键值,就是此进程运行的依据。
在进入While 1=1这个无限循环后,
当“状态一”为1时,要求跳出整个IF
当“状态一”不为1,而“状态二”为1时,要求只跳出 While 1=1

这个例子应该能说明跳出IF语句也是有很大作用的吧。

[ 本帖最后由 gaoyuan22 于 2008-7-30 15:06 编辑 ]
发表于 2008-7-30 20:44:14 | 显示全部楼层
楼上的逻辑有问题
发表于 2008-7-30 23:32:24 | 显示全部楼层
1、请问,If...Then...在什么情况下需要跳出?

2、Func...EndFunc中,只要存在返回某值即Return命令就会立即跳出函数

3、纯属书写习惯,每行一个没坏处

另,为啥什么都要跳出??
 楼主| 发表于 2008-7-31 01:05:22 | 显示全部楼层

回复 7# pcbar 的帖子

pcbar 斑竹大人,
我6楼发的脚本举例,绝对没有逻辑问题。
(INI键值不一定是不变的,
实际上我比较喜欢用INI文件来传递两个脚本之间的信息。
当然也可以用注册表或读写内存的方式来传递,
但是,我个人习惯用INI文件来传递信息了。)
有许多时候,
脚本需要一边处理,在一边取得情报,看看客观条件是不是符合继续进行下去的要求。
 楼主| 发表于 2008-7-31 01:11:31 | 显示全部楼层

回复 8# skyfree 的帖子

skyfree 兄:
你好。
第一点,
第6楼,我举了个例子来说明有时候是需要看条件决定是不是跳出IF的。
有许多时候,脚本需要处理一段,再取得情报,看看客观条件是不是符合继续进行下去的要求。
当然没有跳出IF 也能写脚本,但是,有跳出IF绝对可以方便很多。

第二点,谢谢,我了解了。

第三点,
写成一排主要是为了方便,
比如,
$Va1、2、3这3个变量都是 FAND() 这个子程序(函数)需要的变量,
而这个部分又需要反复调用。
这样写起来是不是不太方便:
(写成一排会好操做许多,也许是个人习惯吧)

$Va1=34
$Va2=165
$Va3=44
call("FAND")
$Va1=14
$Va2=65
$Va3=24
call("FAND")
$Va1=12
$Va2=46
$Va3=98
call("FAND")
$Va1=122
$Va2=37
$Va3=87
call("FAND")
$Va1=13
$Va2=317
$Va3=23
call("FAND")



[ 本帖最后由 gaoyuan22 于 2008-7-31 01:18 编辑 ]
发表于 2008-7-31 08:43:53 | 显示全部楼层

回复 10# gaoyuan22 的帖子

fand(34,165,44)
fand(14,65,24)
..........
...........
这样不是更简洁
 楼主| 发表于 2008-7-31 15:18:41 | 显示全部楼层

回复 11# pcbar 的帖子

fand(14,65,24)
斑竹大人说的是自定义函数是吗。
我刚接触AUTOIT几天。
不知道在定义fand函数时 该怎么写啊。。。
是不是在该函数头上要这样写:

Func _fand($Va1, $Va2,$Va3)

....然后下面的内容不变....

再然后调用时就象您写的那样:
_fand(14,65,24)

这里问一下,在_fand前面需要写上 call 字符么?
谢谢斑竹热心帮助。
(我先去试一下,谢谢拉)

[ 本帖最后由 gaoyuan22 于 2008-7-31 15:20 编辑 ]
 楼主| 发表于 2008-7-31 15:51:13 | 显示全部楼层

回复 11# pcbar 的帖子

谢谢斑竹,测试通过了,这样写起来很方便。
谢谢!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 08:05 , Processed in 0.077756 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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