3mile 发表于 2011-7-22 18:35:17

回复 15# 夜猫猫
1.@ScriptDir&"\网络游戏.ini"和@ScriptDir&"\log.ini"有什么关系?
2.这两个文件和LISTVIEW有什么关系?
3.这两个文件和CHECKBOX的关系?

夜猫猫 发表于 2011-7-22 20:41:09

本帖最后由 夜猫猫 于 2011-7-22 20:42 编辑

今天搞了一下午的系统,现在才有空上网.哎.哭...
1. 网络游戏.ini与log.ini是同一文件.只是改下名
2. LISTVIEW里的项目在选择后写入INI文件中
3.CHECKBOX就是要选中的项目.

搜索的的信息显示在LISTVIEW里.手动选择后.批量写入INI文件中.其中判断.INI文件中如果存在选择的项目,跳过已有的,继续添加下一条.
单条信息对比知道怎么弄.就是卡在多条信息对比.

netegg 发表于 2011-7-22 21:09:21

回复 17# 夜猫猫
你那些exe不在同一个文件夹(父文件夹和子文件夹不算同一个)?

夜猫猫 发表于 2011-7-22 21:20:00

??不是同一文件夹.
主目录---多个子目录---各个子目录下的子目录
相当与遍历WINDOWS目录

3mile 发表于 2011-7-22 21:25:18

INI文件结构是?

夜猫猫 发表于 2011-7-22 21:41:35

本帖最后由 夜猫猫 于 2011-7-22 21:43 编辑

就是GUICtrlSetData($Label3,$current & "\" & $file)这里插入一行输出写入INI
FileWrite(@ScriptDir&"\log.ini",$FileNmae&"="&$current & "\" & $file& @CRLF)

51新炫舞=G:\网络游戏\51新炫舞\Setup.exe
QQ三国=G:\网络游戏\QQ三国\QQSG.exe
QQ飞车=G:\网络游戏\QQ飞车\QQSpeedLauncher.exe
倩女幽魂=G:\网络游戏\倩女幽魂\01\Launcher.exe

joyue9 发表于 2011-7-22 21:54:26

学习了,各位,顺便留名

joyue9 发表于 2011-7-22 21:54:29

学习了,各位,顺便留名

netegg 发表于 2011-7-23 01:05:01

本帖最后由 netegg 于 2011-7-23 02:43 编辑

$aDir = _filelisttoarray('d:\网络游戏', '*', 2)
for $i = 1 to $aDir
$aExe = _filelisttoarray('d:\网络游戏\' & $aDir[$i], '.exe', 1)
_arraydisplay($aExe, '')
next

???

夜猫猫 发表于 2011-7-23 04:35:02

for $i = 1 to $aDir
$aExe = _filelisttoarray('d:\网络游戏\' & $aDir[$i], '.exe', 1)
_arraydisplay($aExe, '')
next

错误, '.exe'

netegg 发表于 2011-7-23 05:06:39

本帖最后由 netegg 于 2011-7-23 10:03 编辑

回复 25# 夜猫猫 #include<array.au3>
Global $ret
;Local $files = _Seachfilebyext(@SystemDir, 'exe')
;MsgBox(0,0,$files)
Local $aFile = _Seachfilebyext(@SystemDir, 'exe', 1)
;Local $aFile = _Seachfilebyext(@SystemDir, 'exe', 2)
;MsgBox(0,0,@error & @crlf & @extended)
_ArrayDisplay($aFile, ' ')
Func _Seachfilebyext($current, $ext, $iflag = 2)
        If Not ($iflag = 0 or $iflag = 1 or $iflag = 2) Then Return SetError(1, 2, 0)
        Local $search = FileFindFirstFile($current & "\*.*")
        While 1
                Dim $file = FileFindNextFile($search)
                If @error Or StringLen($file) < 1 Then ExitLoop
                If Not StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
                        If StringRight($current & "\" & $file, StringLen($ext)) = $ext Then
                                $ret &= $current & "\" & $file & '|'
                        EndIf
                EndIf
                If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..") Then
                        _Seachfilebyext($current & "\" & $file, $ext, $iflag)
                EndIf
        WEnd
        Switch $iflag
                Case 0
                        If $ret Then Return $ret
                Case 1, 2
                        If $ret Then Return StringSplit(StringTrimRight($ret, 1), '|', $iflag)
        EndSwitch
        Return SetError(1, 1, 0)
EndFunc   ;==>_Seachfilebyext
后续的操作好好想想吧,上述代码是遍历,你原来的思路好像有点问题,总觉得好像是在绕圈子

3mile 发表于 2011-7-23 13:01:44

就是GUICtrlSetData($Label3,$current & "\" & $file)这里插入一行输出写入INI
FileWrite(@ScriptDir&"\lo ...
夜猫猫 发表于 2011-7-22 21:41 http://www.autoitx.com/images/common/back.gif
如果这样的INI文件结构是会出错的.
比如QQ飞车里有两个以上的文件写入INI时会被覆盖掉.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <SendMessage.au3>
#include <array.au3>
#include <GuiImageList.au3>
#include <winapiex.au3>

Global $icon, $CKBOXE_ID
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("搜索文件测试", 564, 577, 192, 124)
$Label1 = GUICtrlCreateLabel("搜索路径:", 55, 42, 60, 20)
$Input1 = GUICtrlCreateInput("H:\lenovo", 110, 37, 133, 20)
$Label2 = GUICtrlCreateLabel("搜索匹配:", 330, 42, 60, 20)
$Input2 = GUICtrlCreateInput("Client,Launcher,patcher,qq,online,Setup", 385, 37, 133, 20)
$Button1 = GUICtrlCreateButton("浏览", 250, 35, 50, 25)
$Button2 = GUICtrlCreateButton("搜索", 232, 95, 97, 33)
$Button3 = GUICtrlCreateButton("(全选)", 132, 537, 97, 33)
$Button4 = GUICtrlCreateButton("(添加)", 332, 537, 97, 33)
;$Checkbox1 = GUICtrlCreateCheckbox("", 0, 0, 17, 17)
$Label3 = GUICtrlCreateLabel("", 110, 70, 450, 20)

$ListView = GUICtrlCreateListView(' 选择| 主文件夹名 |   文件路径', 5, 140, 555, 390, -1, 0x00000004 + 0x00000020)
;~ _GUICtrlListView_SetExtendedListViewStyle($ListView, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES))
_GUICtrlListView_SetColumnWidth($ListView, 0, 64 + 24)
_GUICtrlListView_SetColumnWidth($ListView, 1, 100)
_GUICtrlListView_SetColumnWidth($ListView, 2, 355)

$LHand = GUICtrlGetHandle($ListView)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        $file = FileSelectFolder("选择文件夹.", "")
                        GUICtrlSetData($Input1, $file)
                Case $Button2
                        _SendMessage($LHand, $LVM_DELETEALLITEMS)
                        $filter_name_array = StringSplit(GUICtrlRead($Input2), ",", 2 + 1)
                        Local $filter_name = ''
                        For $i = 0 To UBound($filter_name_array) - 1
                                $filter_name &= "*" & $filter_name_array[$i] & "*.exe;"
                        Next
                       
                        $arr = _RecFileListToArray(GUICtrlRead($Input1), $filter_name, 1, 1, 0, 2)
                        If Not IsArray($arr) Then ContinueCase
                        $filter = StringReplace(GUICtrlRead($Input2), ",", "|")
                        Local $image = _GUIImageList_Create(64, 64, 5, 3)
                        For $i = 1 To UBound($arr) - 1
                                If _WinAPI_ExtractIconEx($arr[$i], -1, 0, 0, 0) > 0 Then
                                        _GUIImageList_AddIcon($image, $arr[$i], 0, True)
                                Else
                                        $hIcon = _WinAPI_ShellExtractAssociatedIcon($arr[$i], 0)
                                        _GUIImageList_ReplaceIcon($image, -1, $hIcon)
                                        _WinAPI_DestroyIcon($hIcon)
                                EndIf
                        Next
                        _GUICtrlListView_SetImageList($ListView, $image, 1)
                        Local $k = 0
                        For $i = 1 To UBound($arr) - 1
                                _GUICtrlListView_AddItem($ListView, "", $k)
                                $path = StringRegExpReplace(GUICtrlRead($Input1), '\\', '\\\\')
                                $aaa = "(?(?=" & $path & "\\.*?\\.*)" & $path & "\\(.*?)\\.*|:\\(.*?)\\.*)"
                                _GUICtrlListView_AddSubItem($ListView, $k, StringRegExpReplace($arr[$i], $aaa, '$1$2'), 1)
                                _GUICtrlListView_AddSubItem($ListView, $k, $arr[$i], 2)
                                $k += 1
                        Next
                       
                Case $Button3
                        _GUICtrlListView_SetItemChecked($ListView, -1)

                Case $Button4
                        Local $jg = ""
                        Local $checked
                        For $i = 0 To _GUICtrlListView_GetItemCount($ListView)
                                If _GUICtrlListView_GetItemChecked(GUICtrlGetHandle($ListView), $i) = $GUI_CHECKED Then
                                        ReDim $checked
                                        $checked += 1
                                        $checked = _GUICtrlListView_GetItemText($ListView, $i, 1)
                                        $checked = _GUICtrlListView_GetItemText($ListView, $i, 2)
                                EndIf
                        Next
                        If Not FileExists("log.ini") Then
                                Local $k = 1
                                For $i = 1 To $checked
                                        If $i > 1 And $checked[$i] <> $checked[$i - 1] Then $k = 1
                                        IniWrite("log.ini", $checked[$i], $k, $checked[$i])
                                        $k += 1
                                Next
                        Else
                                $ini = IniReadSectionNames("log.ini")
                                Local $ini_all, $k = 1
                                For $i = 1 To $ini
                                        $temp = IniReadSection("log.ini", $ini[$i])
                                        ReDim $ini_all]
                                        For $n = 1 To $temp
                                                $ini_all[$k] = $ini[$i]
                                                $ini_all[$k] = $temp[$n]
                                                $ini_all = UBound($ini_all)
                                                $k += 1
                                        Next
                                Next

                                _ArrayDisplay($ini_all)
                                Local $Dic = ObjCreate('Scripting.Dictionary')
                                For $i = 1 To UBound($ini_all) - 1
                                        $Dic.Add($ini_all[$i], $ini_all[$i])
                                Next
                               
                                Local $temp = 10000
                                For $i = 1 To $checked
                                        If Not $Dic.Exists($checked[$i]) Then
                                                IniWrite("log.ini", $checked[$i], $temp, $checked[$i])
                                                $temp += 1
                                        EndIf
                                Next
                               
                                For $i = 1 To $ini;整理INI
                                        $k = 1
                                        $temp = IniReadSection("log.ini", $ini[$i])
                                        IniDelete("log.ini", $ini[$i])
                                        For $n = 1 To $temp
                                                IniWrite("log.ini", $ini[$i], $k, $temp[$n])
                                                $k += 1
                                        Next
                                Next
                               
                        EndIf
                        MsgBox(0, '勾选的项目', "ini重建已经完成")

        EndSwitch
WEnd

Func _RecFileListToArray($sInitialPath, $sInclude_List = "*", $iReturn = 0, $iRecur = 0, $iSort = 0, $iReturnPath = 1, $sExclude_List = "", $sExclude_List_Folder = "")

        Local $asReturnList = , $asFileMatchList = , $asRootFileMatchList = , $asFolderMatchList = , $asFolderSearchList =
        Local $sFolderSlash = "", $iMaxLevel, $sInclude_File_Mask, $sExclude_File_Mask, $sInclude_Folder_Mask = ".+", $sExclude_Folder_Mask = ":"
        Local $hSearch, $fFolder, $sRetPath = "", $sCurrentPath, $sName
        Local $asFolderFileSectionList = [], $sFolderToFind, $iFileSectionStartIndex, $iFileSectionEndIndex
       
        If Not FileExists($sInitialPath) Then Return SetError(1, 1, "")
        If StringRight($sInitialPath, 1) = "\" Then
                $sFolderSlash = "\"
        Else
                $sInitialPath = $sInitialPath & "\"
        EndIf
        $asFolderSearchList = $sInitialPath

        If $iRecur > 1 Or Not IsInt($iRecur) Then Return SetError(1, 4, "")
        If $iRecur < 0 Then
                StringReplace($sInitialPath, "\", "", 2)
                $iMaxLevel = @extended - $iRecur
        EndIf

        If $sInclude_List = "*" Then
                $sInclude_File_Mask = ".+"
        Else
                If Not _RFLTA_ListToMask($sInclude_File_Mask, $sInclude_List) Then Return SetError(1, 2, "")
        EndIf
        Switch $iReturn
                Case 0
                        Switch $iRecur
                                Case 0
                                        $sInclude_Folder_Mask = $sInclude_File_Mask
                        EndSwitch
                Case 2
                        $sInclude_Folder_Mask = $sInclude_File_Mask
        EndSwitch

        If $sExclude_List = "" Then
                $sExclude_File_Mask = ":"
        Else
                If Not _RFLTA_ListToMask($sExclude_File_Mask, $sExclude_List) Then Return SetError(1, 7, "")
        EndIf
        Switch $iReturn
                Case 0
                        Switch $iRecur
                                Case 0
                                        $sExclude_Folder_Mask = $sExclude_File_Mask
                                Case Else
                                        If $sExclude_List_Folder <> "" Then
                                                If Not _RFLTA_ListToMask($sExclude_Folder_Mask, $sExclude_List_Folder) Then Return SetError(1, 8, "")
                                        EndIf
                        EndSwitch
                Case 2
                        $sExclude_Folder_Mask = $sExclude_File_Mask
        EndSwitch

        If Not ($iReturn = 0 Or $iReturn = 1 Or $iReturn = 2) Then Return SetError(1, 3, "")
        If Not ($iSort = 0 Or $iSort = 1 Or $iSort = 2) Then Return SetError(1, 5, "")
        If Not ($iReturnPath = 0 Or $iReturnPath = 1 Or $iReturnPath = 2) Then Return SetError(1, 6, "")

        While $asFolderSearchList > 0

                $sCurrentPath = $asFolderSearchList[$asFolderSearchList]
                $asFolderSearchList -= 1
                Switch $iReturnPath
                        Case 1
                                $sRetPath = StringReplace($sCurrentPath, $sInitialPath, "")
                        Case 2
                                $sRetPath = $sCurrentPath
                EndSwitch

                $hSearch = FileFindFirstFile($sCurrentPath & "*")
                If $iReturn = 0 And $iSort And $iReturnPath Then
                        _RFLTA_AddToList($asFolderFileSectionList, $sRetPath, $asFileMatchList + 1)
                EndIf
                If $hSearch = -1 Then
                        ContinueLoop
                EndIf

                While 1
                        $sName = FileFindNextFile($hSearch)
                        If @error Then
                                ExitLoop
                        EndIf
                        $fFolder = @extended

                        If $fFolder Then
                                Select
                                        Case $iRecur < 0
                                                StringReplace($sCurrentPath, "\", "", 0, 2)
                                                If @extended < $iMaxLevel Then
                                                        ContinueCase
                                                EndIf
                                        Case $iRecur = 1
                                                If Not StringRegExp($sName, $sExclude_Folder_Mask) Then
                                                        _RFLTA_AddToList($asFolderSearchList, $sCurrentPath & $sName & "\")
                                                EndIf
                                EndSelect
                        EndIf

                        If $iSort Then
                                If $fFolder Then
                                        If StringRegExp($sName, $sInclude_Folder_Mask) And Not StringRegExp($sName, $sExclude_Folder_Mask) Then
                                                _RFLTA_AddToList($asFolderMatchList, $sRetPath & $sName & $sFolderSlash)
                                        EndIf
                                Else
                                        If StringRegExp($sName, $sInclude_File_Mask) And Not StringRegExp($sName, $sExclude_File_Mask) Then
                                                If $sCurrentPath = $sInitialPath Then
                                                        _RFLTA_AddToList($asRootFileMatchList, $sRetPath & $sName)
                                                Else
                                                        _RFLTA_AddToList($asFileMatchList, $sRetPath & $sName)
                                                EndIf
                                        EndIf
                                EndIf

                        Else
                                If $fFolder Then
                                        If $iReturn <> 1 And StringRegExp($sName, $sInclude_Folder_Mask) And Not StringRegExp($sName, $sExclude_Folder_Mask) Then
                                                _RFLTA_AddToList($asReturnList, $sRetPath & $sName & $sFolderSlash)
                                        EndIf
                                Else
                                        If $iReturn <> 2 And StringRegExp($sName, $sInclude_File_Mask) And Not StringRegExp($sName, $sExclude_File_Mask) Then
                                                _RFLTA_AddToList($asReturnList, $sRetPath & $sName)
                                        EndIf
                                EndIf
                        EndIf

                WEnd

                FileClose($hSearch)
        WEnd

        If $iSort Then
                Switch $iReturn
                        Case 0
                                If $asRootFileMatchList = 0 And $asFolderMatchList = 0 Then Return SetError(1, 9, "")
                        Case 1
                                If $asRootFileMatchList = 0 And $asFileMatchList = 0 Then Return SetError(1, 9, "")
                        Case 2
                                If $asFolderMatchList = 0 Then Return SetError(1, 9, "")
                EndSwitch

                Switch $iReturn
                        Case 2
                                ReDim $asFolderMatchList[$asFolderMatchList + 1]
                                $asReturnList = $asFolderMatchList
                                _RFLTA_ArraySort($asReturnList)
                        Case 1
                                If $iReturnPath = 0 Then
                                        _RFLTA_AddFileLists($asReturnList, $asRootFileMatchList, $asFileMatchList)
                                        _RFLTA_ArraySort($asReturnList)
                                Else
                                        _RFLTA_AddFileLists($asReturnList, $asRootFileMatchList, $asFileMatchList, 1)
                                EndIf
                        Case 0
                                If $iReturnPath = 0 Then
                                        _RFLTA_AddFileLists($asReturnList, $asRootFileMatchList, $asFileMatchList)
                                        $asReturnList += $asFolderMatchList
                                        ReDim $asFolderMatchList[$asFolderMatchList + 1]
                                        _RFLTA_ArrayConcatenate($asReturnList, $asFolderMatchList)
                                        _RFLTA_ArraySort($asReturnList)
                                Else
                                        Local $asReturnList[$asFileMatchList + $asRootFileMatchList + $asFolderMatchList + 1]
                                        $asReturnList = $asFileMatchList + $asRootFileMatchList + $asFolderMatchList
                                        _RFLTA_ArraySort($asRootFileMatchList, 1, $asRootFileMatchList)
                                        For $i = 1 To $asRootFileMatchList
                                                $asReturnList[$i] = $asRootFileMatchList[$i]
                                        Next
                                        Local $iNextInsertionIndex = $asRootFileMatchList + 1
                                        _RFLTA_ArraySort($asFolderMatchList, 1, $asFolderMatchList)
                                        For $i = 1 To $asFolderMatchList
                                                If $sFolderSlash Then
                                                        $sFolderToFind = $asFolderMatchList[$i]
                                                Else
                                                        $sFolderToFind = $asFolderMatchList[$i] & "\"
                                                EndIf
                                                For $j = 1 To $asFolderFileSectionList
                                                        If $sFolderToFind = $asFolderFileSectionList[$j] Then ExitLoop
                                                Next
                                                $iFileSectionStartIndex = $asFolderFileSectionList[$j]
                                                If $j = $asFolderFileSectionList Then
                                                        $iFileSectionEndIndex = $asFileMatchList
                                                Else
                                                        $iFileSectionEndIndex = $asFolderFileSectionList[$j + 1] - 1
                                                EndIf
                                                If $iSort = 1 Then
                                                        _RFLTA_ArraySort($asFileMatchList, $iFileSectionStartIndex, $iFileSectionEndIndex)
                                                EndIf
                                                $asReturnList[$iNextInsertionIndex] = $asFolderMatchList[$i]
                                                $iNextInsertionIndex += 1
                                                For $j = $iFileSectionStartIndex To $iFileSectionEndIndex
                                                        $asReturnList[$iNextInsertionIndex] = $asFileMatchList[$j]
                                                        $iNextInsertionIndex += 1
                                                Next
                                        Next
                                EndIf
                EndSwitch

        Else
                If $asReturnList = 0 Then Return SetError(1, 9, "")
                ReDim $asReturnList[$asReturnList + 1]
        EndIf
        Return $asReturnList
EndFunc   ;==>_RecFileListToArray


Func _RFLTA_ListToMask(ByRef $sMask, $sList)
        If StringRegExp($sList, "\\|/|:|\<|\>|\|") Then Return 0
        $sList = StringReplace(StringStripWS(StringRegExpReplace($sList, "\s*;\s*", ";"), 3), ";", "|")
        $sList = StringReplace(StringReplace(StringRegExpReplace($sList, "(\^|\$|\.)", "\\$1"), "?", "."), "*", ".*?")
        $sMask = "(?i)^(" & $sList & ")\z"
        Return 1
EndFunc   ;==>_RFLTA_ListToMask

Func _RFLTA_AddToList(ByRef $aList, $vValue_0, $vValue_1 = -1)
        If $vValue_1 = -1 Then
                $aList += 1
                If UBound($aList) <= $aList Then ReDim $aList
                $aList[$aList] = $vValue_0
        Else
                $aList += 1
                If UBound($aList) <= $aList Then ReDim $aList
                $aList[$aList] = $vValue_0
                $aList[$aList] = $vValue_1
        EndIf

EndFunc   ;==>_RFLTA_AddToList

Func _RFLTA_AddFileLists(ByRef $asTarget, $asSource_1, $asSource_2, $iSort = 0)
        ReDim $asSource_1[$asSource_1 + 1]
        If $iSort = 1 Then _RFLTA_ArraySort($asSource_1)
        $asTarget = $asSource_1
        $asTarget += $asSource_2
        ReDim $asSource_2[$asSource_2 + 1]
        If $iSort = 1 Then _RFLTA_ArraySort($asSource_2)
        _RFLTA_ArrayConcatenate($asTarget, $asSource_2)
EndFunc   ;==>_RFLTA_AddFileLists

Func _RFLTA_FileListSearch(Const ByRef $avArray, $vValue, $iIndex, $sSlash)
        Local $aRet
        If Not $sSlash Then $vValue &= "\"
        For $i = $iIndex To $avArray
                If StringRegExpReplace($avArray[$i], "(^.*\\)(.*)", "\1") = $vValue Then ExitLoop
        Next
        If $i > $avArray Then
                If $iIndex = $avArray Then $iIndex -= 1
                For $i = $iIndex + 1 To 1 Step -1
                        If StringRegExpReplace($avArray[$i], "(^.*\\)(.*)", "\1") = $vValue Then ExitLoop
                Next
                If $i = 0 Then Return SetError(1, 0, "")
                $aRet = $i
                For $i = $aRet To 1 Step -1
                        If StringRegExpReplace($avArray[$i], "(^.*\\)(.*)", "\1") <> $vValue Then ExitLoop
                Next
                $aRet = $i + 1
        Else
                $aRet = $i
                For $i = $aRet To $avArray
                        If StringRegExpReplace($avArray[$i], "(^.*\\)(.*)", "\1") <> $vValue Then ExitLoop
                Next
                $aRet = $i - 1
        EndIf
        Return $aRet
EndFunc   ;==>_RFLTA_FileListSearch

Func _RFLTA_ArraySort(ByRef $avArray, $iStart = 1, $iEnd = -99)
        If $iEnd = -99 Then $iEnd = UBound($avArray) - 1
        _RFLTA_QuickSort($avArray, $iStart, $iEnd)
EndFunc   ;==>_RFLTA_ArraySort

Func _RFLTA_QuickSort(ByRef $avArray, ByRef $iStart, ByRef $iEnd)
        Local $vTmp
        If ($iEnd - $iStart) < 15 Then
                Local $i, $j, $vCur
                For $i = $iStart + 1 To $iEnd
                        $vTmp = $avArray[$i]
                        If IsNumber($vTmp) Then
                                For $j = $i - 1 To $iStart Step -1
                                        $vCur = $avArray[$j]
                                        If ($vTmp >= $vCur And IsNumber($vCur)) Or (Not IsNumber($vCur) And StringCompare($vTmp, $vCur) >= 0) Then ExitLoop
                                        $avArray[$j + 1] = $vCur
                                Next
                        Else
                                For $j = $i - 1 To $iStart Step -1
                                        If (StringCompare($vTmp, $avArray[$j]) >= 0) Then ExitLoop
                                        $avArray[$j + 1] = $avArray[$j]
                                Next
                        EndIf
                        $avArray[$j + 1] = $vTmp
                Next
                Return
        EndIf
        Local $L = $iStart, $R = $iEnd, $vPivot = $avArray, $fNum = IsNumber($vPivot)
        Do
                If $fNum Then
                        While ($avArray[$L] < $vPivot And IsNumber($avArray[$L])) Or (Not IsNumber($avArray[$L]) And StringCompare($avArray[$L], $vPivot) < 0)
                                $L += 1
                        WEnd
                        While ($avArray[$R] > $vPivot And IsNumber($avArray[$R])) Or (Not IsNumber($avArray[$R]) And StringCompare($avArray[$R], $vPivot) > 0)
                                $R -= 1
                        WEnd
                Else
                        While (StringCompare($avArray[$L], $vPivot) < 0)
                                $L += 1
                        WEnd
                        While (StringCompare($avArray[$R], $vPivot) > 0)
                                $R -= 1
                        WEnd
                EndIf
                If $L <= $R Then
                        $vTmp = $avArray[$L]
                        $avArray[$L] = $avArray[$R]
                        $avArray[$R] = $vTmp
                        $L += 1
                        $R -= 1
                EndIf
        Until $L > $R
        _RFLTA_QuickSort($avArray, $iStart, $R)
        _RFLTA_QuickSort($avArray, $L, $iEnd)
EndFunc   ;==>_RFLTA_QuickSort

Func _RFLTA_ArrayConcatenate(ByRef $avArrayTarget, Const ByRef $avArraySource)
        Local $iUBoundTarget = UBound($avArrayTarget) - 1, $iUBoundSource = UBound($avArraySource)
        ReDim $avArrayTarget[$iUBoundTarget + $iUBoundSource]
        For $i = 1 To $iUBoundSource - 1
                $avArrayTarget[$iUBoundTarget + $i] = $avArraySource[$i]
        Next
EndFunc   ;==>_RFLTA_ArrayConcatenate

netegg 发表于 2011-7-23 13:23:03

回复 27# 3mile


    {:1_551:}呐喊从心底而发

3mile 发表于 2011-7-23 13:24:27

回复 28# netegg
呐喊什么呢?
从来不用表情,不知道是什么意思啊.

netegg 发表于 2011-7-23 13:28:33

回复 29# 3mile
怎么也没想过这么个东西要用400多行
页: 1 [2] 3
查看完整版本: 卡壳了,不得不发贴,判断ListView项目复选框是否选中?(解决)