求两个以上变量进行判断的表达式!
如下:If $maxresolution <> '' Then
If $Width >= 1600 And $Height >= 1200 Then _ChangeScreenRes(1600, 1200)
If 1440 <= $Width < 1600 And 1080 <= $Height < 1200 Then _ChangeScreenRes(1440, 1080)
If 1280 <= $Width < 1440 And 1024 <= $Height < 1080 Then _ChangeScreenRes(1280, 1024)
If 1024 <= $Width < 1280 And 768 <= $Height < 1024 Then _ChangeScreenRes(1024, 768)
If 800 <= $Width < 1024 And 600 <= $Height < 768 Then _ChangeScreenRes(800, 600)
Else
RegDelete($MODES)
EndIf
$i = $i + 1
WEnd
[ 本帖最后由 卫和谐 于 2008-6-13 13:48 编辑 ] 600<$WITH<800,800<$WITH<1000......,用IF...THEN...这种表达式不行,总是会返回600<$WITH<800!
Switch $with
case 600 to 800
case 800 to 1000
endswtich
用if的话
if 600<$with < 800 then
Else
if 800<$with< 1000 then
endif
endif ;要求大于600而小于800时或大于800小于1000......,
Dim $x=801
If $x>600 And $x< 800 Or $x>800 And $x<1000 Then
MsgBox(0,"test","恭喜你!条件符合这是测试结果"&$x)
Else
MsgBox(0,"error","条件不符合!"&"你的变量值为"&$x)
EndIf
很简单...给你写好了,自己看着改吧!如果问题已解决请注明.
[ 本帖最后由 jhwl 于 2008-6-5 14:47 编辑 ] 可能是我没有说明白,看下面代码:
If $maxresolution <> '' Then
If $Width >= 1600 And $Height >= 1200 Then _ChangeScreenRes(1600, 1200)
If 1440 <= $Width < 1600 And 1080 <= $Height < 1200 Then _ChangeScreenRes(1440, 1080)
If 1280 <= $Width < 1440 And 1024 <= $Height < 1080 Then _ChangeScreenRes(1280, 1024)
If 1024 <= $Width < 1280 And 768 <= $Height < 1024 Then _ChangeScreenRes(1024, 768)
If 800 <= $Width < 1024 And 600 <= $Height < 768 Then _ChangeScreenRes(800, 600)
Else
RegDelete($MODES)
EndIf
$i = $i + 1
WEnd
象这段代码,$Width 和$Height是读取的,结果老是运行 _ChangeScreenRes(800, 600)的?
[ 本帖最后由 卫和谐 于 2008-6-6 09:42 编辑 ] 是你写法上的逻辑问题吧...
800 <= $Width < 1024
800<$width 返回真则为1 , 返回假则为0, 当然小于1024了....
所以必然成立的....
AU3的逻辑判断太不严谨了,我们为了代码的严谨更要注意这一点, 不要太刻意追求代码的简洁... 有时会隐藏很多错误的..有时代码多了点是值得的
关于范围判断, AU3帮助里推荐的是SWITCH 能否写个样子参考下? 昨天用SWITCH自己写了一下,不行,谁能演示下?? 用下面的不行吗,而且变量判断不要用800 <= $Width < 1024这样的,应该用$width>=800 and$Width < 1024,比较严谨,高级语言就不让那样用的,容易产生歧义
If <表达式> Then
语句
...
[ElseIf 表达式-n Then
]
...
[Else
...
EndIf switch$i
case 600 to 800
case 800 t o1000
难道不行?
[ 本帖最后由 netegg 于 2008-6-9 12:07 编辑 ] 是不是要改分辨率,你把操作语句定义为子过程,可能可以吧 switch Check($width,$height)
case 10
_ChangeScreenRes(1600, 1200)
case 8
_ChangeScreenRes(1440, 1080)
case 6
_ChangeScreenRes(1280, 1024)
case 4
_ChangeScreenRes(1024, 768)
case 2
_ChangeScreenRes(800, 600)
endswitch
func Check($I,$J)
select
case $I>=
$I = 5
case $I<=
$I = 4
case $I<=
$I = 3
case $I<=
$I = 2
case $I<=
$I = 1
EndSelect
select
case $J>=
$J = 5
case $J<=
$J = 4
case $J<=
$J = 3
case $J<=
$J = 2
case $J<=
$J = 1
EndSelect
$Sum = $I + $J
Return($Sum)
endfunc 等回家试试楼上的方法! 这些语法本来就不该被通过的,只是这AU3语法太不严谨了...真假 字符串 数字都能一并使用,有时很方便,但实际使用中又容易出逻辑错误,所以AU3也就是个弱脚本了
我现在受不了的毛病就是类似这样的 somefunc("someparam")后面不能直接加 来取返回的数组某索引值 11楼的方法也试了,不好用,仍然和我最初的处理结果一样!?运行:
_ChangeScreenRes(800, 600) 这个没人能够解决吗,高手帮下忙!
页:
[1]
2