2015-12-19 161 views
-1

我使用的AutoIt。
我有一个函数列出了计算机上安装的所有程序。它结束与:需要帮助阅读功能输出

返回$软件

ENDFUNC

我也有,我想比较一下程序的主列表。我有一个脚本可以完成我想要的功能,但是我无法将$软件合并到新功能中。

#include <Array.au3> 

Local $software 

Local $a[50] = ["CCleaner", "Java [6]", "Adobe", "MBAM"] 
Local $b[50] = ???????? 

_ArrayDisplay(_Separate($a, $b)) 

Func _Separate(ByRef $in0, ByRef $in1) 
    $in0 = _ArrayUnique($in0, 0, Default, Default, 0) 
    $in1 = _ArrayUnique($in1, 0, Default, Default, 0) 
    Local $z[2] = [UBound($in0), UBound($in1)], $low = 1 * ($z[0] > $z[1]), $aTemp[$z[Not $low]][3], $aOut = $aTemp, $aNdx[3] 
    For $i = 0 To $z[Not $low] - 1 
     If $i < $z[0] Then $aTemp[$i][0] = $in0[$i] 
     If $i < $z[1] Then $aTemp[$i][1] = $in1[$i] 
    Next 
    For $i = 0 To $z[$low] - 1 
     $x = _ArrayFindAll($aTemp, $aTemp[$i][$low], 0, 0, 1, 0, Not $low) 
     If Not @error Then ; both 
      For $j = 0 To UBound($x) - 1 
       $aTemp[$x[$j]][2] = 1 
      Next 
      $aOut[$aNdx[2]][2] = $aTemp[$i][$low] 
      $aNdx[2] += 1 
     Else ; only in $low 
      $aOut[$aNdx[$low]][$low] = $aTemp[$i][$low] 
      $aNdx[$low] += 1 
     EndIf 
    Next 
    For $i = 0 To $z[Not $low] - 1 
     If $aTemp[$i][2] <> 1 Then 
      $aOut[$aNdx[Not $low]][Not $low] = $aTemp[$i][Not $low] 
      $aNdx[Not $low] += 1 
     EndIf 
    Next 
    ReDim $aOut[_ArrayMax($aNdx)][3] 
    Return $aOut 
EndFunc ;==>_Separate 

如何获取$软件的内容到$ b数组中?

回答

0

只需使用

Local $yourArrayB = yourFunctionWhichReturnsTheArray 

或者写一个小环放在返回数组的所有值到一个新的。

此外,您可以将返回的数组转换为带有_ArrayToString的字符串,然后使用您的软件阵列值StringInStr进行搜索,该值可能会更快。

+0

感谢您的帮助。我尝试了你的第一个建议,它只输出字符串中的第一个文件。当地$ A [50] = [ “CCleaner的”, “Java的[6]”,为 “Adobe”, “MBAM”] 本地$ softwareb [50] = [_软件()]我不知道该怎么做你的其他2条建议。 _ArrayDisplay(_Separate($ A,$ softwareb)) –

+0

对不起我以前的评论的混乱。我无法纠正它。 –