找回密码
 加入
搜索
楼主: x163169x

[AU3基础] 如何将数组输出为条件格式

 火... [复制链接]
发表于 2012-6-7 13:18:26 | 显示全部楼层
本帖最后由 drunk 于 2012-6-7 13:25 编辑

楼主是这个意思?

Local $a = StringSplit("a,b,1,...",",")
$b = "3,2,1,0"

MsgBox(0,0,check($a, $b))

Func check($1, $2, $sign = ",")
        If Not IsArray($1) Then $1 = StringSplit($1, $sign)
        If Not IsArray($2) Then $2 = StringSplit($2, $sign)
        Local $len = $1[0], $i, $boolean = True
        If $2[0] < $len Then $len = $2[0]
        For $i = 1 To $len
                If $1[$i] == $2[$i] Then
                        $boolean = False
                        ExitLoop
                EndIf
        Next
        Return $boolean
EndFunc
 楼主| 发表于 2012-6-7 13:57:37 | 显示全部楼层
本帖最后由 x163169x 于 2012-6-7 14:03 编辑
楼主是这个意思?
drunk 发表于 2012-6-7 13:18



    谢谢兄弟帮忙,貌似你的表达式有错误, $1==$2  ?  不管如何修改参数,你这里的结果都是FALSE.

   你这个模型  只对数列个数有结果,没有对数列内容有表述。
  
  此外,即便模型成立,也只对 if语句里单一的表达  and 或者OR  起到作用, 如果同时出现 AND 和 OR  这种单一递归循环  可能不成立。
发表于 2012-6-7 14:47:38 | 显示全部楼层
本帖最后由 netegg 于 2012-6-7 14:51 编辑

回复 47# drunk
重点不在这,如果做遍历的话,是要遍历所有运算符和数据,不单单是数据(这个也是我在琢磨的地方)
发表于 2012-6-8 12:56:03 | 显示全部楼层
本帖最后由 Qokelate 于 2012-6-8 12:59 编辑

表示看不懂楼主想说啥,,  楼上楼下继续。。。。。
发表于 2012-6-8 15:56:32 | 显示全部楼层
本帖最后由 netegg 于 2012-6-8 16:17 编辑

[au3]Local $calculator[2]= ['bitor', 'bitand']
Local $bool[5] =['1=1', '2<>2', '3=4', '4=4', '5<>5']
For $i In $calculator
    For $j In $bool
        For $k In $bool
            If Execute($i & '(' & Execute($j) &','& Execute($k)&')') Then ConsoleWrite($i& '(' &$j & ',' & $k & ')'& @cr)
        Next
    Next
Next
[/au3]
简单了些,另外再给lz一个
[au3]For $i = 1 To 10
    For $j =1 To 10
        If Number(Execute('_add(' & $j &','&$i&')')) = 17 Then ConsoleWrite($j &','&$i& @cr)
    Next
Next
Func _add($i, $j)
    return $i + $j
EndFunc[/au3]
如何扩展lz自己想想吧
至于lz题目的要求,扩展运算符数组应该就行了
发表于 2012-6-9 07:53:32 | 显示全部楼层
像这种复杂的条件逻辑关系组合,最好是先从一个简单的模型开始,使用伪代码描述清楚。否则楼主一来就给出一长串的东西,不仅让别人不好理解,自己也不好表述。
发表于 2012-6-9 11:55:08 | 显示全部楼层
回复 47# x163169x


    你测试好再说好不,
Local $a = StringSplit("a,b,1,...",",")
$b = "3,2,4,0"
MsgBox(0,0,check($a, $b))

至于你想添加符号,也可以嘛,分别用1234表示>,<,=,<>这些,可能要两个函数了,自己想.
发表于 2012-6-9 17:15:24 | 显示全部楼层
同意一楼,没看明白你想做什么?
发表于 2012-6-10 01:51:19 | 显示全部楼层
本帖最后由 netegg 于 2012-6-10 12:11 编辑

回复 52# drunk
不对,小看这个东西了,就像我前面说的,不是求什么结果,而是给定一个结果求n多个原因
lz不要求到底什么原因,只要逻辑表达式最后的运算结果符合即可,这个东西一层好办,层越多越麻烦
发表于 2012-6-10 12:52:29 | 显示全部楼层
回复 1# x163169x




Dim $arr[2]=[2,3]
Dim $b[2]=[1,8]

$str=''
For $i=0 To UBound($arr)-1
        $str&=$b[$i]&'>'&$arr[$i]&' and '
Next
$str=StringTrimRight($str,5)
ConsoleWrite($str&@CRLF)
If Execute($str) Then
        MsgBox('','yes','true')
Else
        MsgBox('','no','false')
EndIf

发表于 2012-6-10 14:33:55 | 显示全部楼层
本帖最后由 netegg 于 2012-6-10 22:42 编辑
回复  x163169x
binghc 发表于 2012-6-10 12:52

大体是这个意思了,不过要遍历运算符(你例子中的'and'和'>')

[au3]Local $aBool[5] = ['1=1', '2<>2', '3=4', '4=4', '5<>5']
Local $tempA = $aBool[0]
Local $tempB = $aBool[0]

For $j = 1 To 4
        If Execute(Execute($tempA) & ' And ' & Execute($aBool[$j])) Then
                $tempA &= ' and ' & $aBool[$j]
                ConsoleWrite($tempA & @CR)
        EndIf
        If Execute(Execute($tempB) & ' Or ' & Execute($aBool[$j])) Then
                $tempB &= ' Or ' & $aBool[$j]
                ConsoleWrite($tempB & @CR)
        EndIf
Next
[/au3]
lz再看看这段吧
 楼主| 发表于 2012-6-17 13:35:41 | 显示全部楼层
谢谢各位大大  鼎力相助,这段时间出去旅游了,未及时回复  请谅解,各个范例我会在下个礼拜好好学习的。

再次感谢各位大大。
 楼主| 发表于 2012-6-17 13:42:04 | 显示全部楼层
像这种复杂的条件逻辑关系组合,最好是先从一个简单的模型开始,使用伪代码描述清楚。否则楼主一来就给出一 ...
lvjing79 发表于 2012-6-9 07:53



    这种本身就很难阐述清楚,阐述不不清楚的原因就是因为看似很简单,但实质非常复杂。但是我有句话已经很明确阐述了,那就是IF后面的代码不是写的,是程序自己构造的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-28 03:07 , Processed in 0.066963 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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