2015-12-19 159 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

對不起我以前的評論的混亂。我無法糾正它。 –