找回密码
 加入
搜索
查看: 1687|回复: 3

[AU3基础] INI排序问题[已解决]

[复制链接]
发表于 2011-7-27 10:35:17 | 显示全部楼层 |阅读模式
本帖最后由 jackywjl 于 2011-7-27 16:57 编辑

想要将INI档内的值依照降序排列,但执行后变成下方排序,一直查不出哪边出问题,请大大帮帮忙,谢谢
c=19
b=6
a=8

ini内容
[test]
a=8
b=6
c=19

源码
#include <Array.au3>
$var=IniReadSection ( "test.ini", "test" )
_ArraySort($var,1,1)
_ArrayDisplay($var)
发表于 2011-7-27 12:30:19 | 显示全部楼层
#include <Array.au3>
$var=IniReadSection ( "test.ini", "test" )
__ArraySort($var,1,1,0,1);降序
_ArrayDisplay($var)
IniDelete( "test.ini", "test")
for $i=1 to $var[0][0]
        IniWrite( "test.ini", "test",$var[$i][0],$var[$i][1])
Next

;~ __ArraySort($var,0,1,0,1);升序
;~ _ArrayDisplay($var)



Func __ArraySort(ByRef $avArray, $iDescending = 0, $iStart = 0, $iEnd = 0, $iSubItem = 0)
        If Not IsArray($avArray) Then Return SetError(1, 0, 0)

        Local $iUBound = UBound($avArray) - 1

        ; Bounds checking
        If $iEnd < 1 Or $iEnd > $iUBound Then $iEnd = $iUBound
        If $iStart < 0 Then $iStart = 0
        If $iStart > $iEnd Then Return SetError(2, 0, 0)

        ; Sort
        Switch UBound($avArray, 0)
                Case 1
                        __ArrayQuickSort1D($avArray, $iStart, $iEnd)
                        If $iDescending Then 
                        For $i=$iStart to $iEnd
                                $avArray[$i]=StringFormat("%19d",$avArray[$i])
                        Next
                        _ArrayReverse($avArray, $iStart, $iEnd)
                        For $i=$iStart to $iEnd
                                $avArray[$i]=StringFormat("%1d",$avArray[$i])
                        Next
                        EndIf
                Case 2
                        Local $iSubMax = UBound($avArray, 2) - 1
                        If $iSubItem > $iSubMax Then Return SetError(3, 0, 0)

                        If $iDescending Then
                                $iDescending = -1
                        Else
                                $iDescending = 1
                        EndIf
                        
                        For $i=$iStart to $iEnd
                                $avArray[$i][$iSubMax]=StringFormat("%19d",$avArray[$i][$iSubMax])
                        Next
                        __ArrayQuickSort2D($avArray, $iDescending, $iStart, $iEnd, $iSubItem, $iSubMax)
                        For $i=$iStart to $iEnd
                                $avArray[$i][$iSubMax]=StringFormat("%1d",$avArray[$i][$iSubMax])
                        Next
                Case Else
                        Return SetError(4, 0, 0)
        EndSwitch

        Return 1
EndFunc   ;==>_ArraySort

评分

参与人数 1金钱 +10 收起 理由
lpxx + 10 学习了

查看全部评分

 楼主| 发表于 2011-7-27 16:55:04 | 显示全部楼层
谢谢3mile大大解决我的问题,看完3mile大大程式码,还真是复杂,看来还需要更加努力
发表于 2011-7-28 00:52:28 | 显示全部楼层
3mile 发表于 2011-7-27 12:30



    学习了,正需要这个
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 21:35 , Processed in 0.072269 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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