bhffhzh 发表于 2015-4-21 10:07:21

搜索数组中包含某个字符

#include <Array.au3>

Dim $i = 1, $RegN
;遍历已安装程序
Const $root = 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
While 1
        $nMsg = GUIGetMsg()
       
        $v = RegEnumKey($root, $i)
        If @error <> 0 Then
                ExitLoop
        Else
                $n = RegRead($root & '\' & $v, 'DisplayName')
                $u = RegRead($root & '\' & $v, 'UninstallString')
                If $n <> '' And $u <> '' Then
                        _ArrayAdd($RegN, $n)
                       
                EndIf
        EndIf
        $i += 1
WEnd

Local $aiResult = _ArrayBinarySearch($RegN, "Microsoft")
_ArrayDisplay($RegN, "第一次")
_ArrayDisplay($aiResult, "第二次")
搜索“Uninstall”键值下面是否包含 “Microsoft”
我用了 _ArrayBinarySearch 貌似不行。

netegg 发表于 2015-4-21 13:13:16

_ArrayBinarySearch只能用在一维数组

bhffhzh 发表于 2015-4-21 22:11:19

新手,一直未解决, 哪位前辈能指点一二,想解决,又解决不了。只能厚脸问问大家了。

netegg 发表于 2015-4-21 22:51:33

http://www.autoitx.com/thread-47731-1-1.html,你在这里问了同样的问题,总不会让大家帮你解决所有的事情吧,该自己动手就自己动手,论坛虽说是开放的,但不是挨宰的

bhffhzh 发表于 2015-4-21 23:08:11

已经解决了。感谢前辈的关注。While 1
        $nMsg = GUIGetMsg()
       
        $v = RegEnumKey($root, $i)
        If @error <> 0 Then
                ExitLoop
        Else
                $n = RegRead($root & '\' & $v, 'DisplayName')
                $u = RegRead($root & '\' & $v, 'UninstallString')
                If $n <> '' And $u <> '' Then
                       
                        $hzh = StringInStr($n, "c++")
                        If $hzh > 0 Then
                               

                               

                                _ArrayAdd($RegN, $n)
                               
                        EndIf
                       
                EndIf
        EndIf
        $i += 1
WEnd




_ArrayDisplay($RegN, "第一次")直接在开始就判断,合适才丢进数组里面。
这样最优吧。
页: [1]
查看完整版本: 搜索数组中包含某个字符