tsys 发表于 2011-8-23 21:25:59

关于ini文件重复数值问题,请赐教【已解决】

本帖最后由 tsys 于 2011-8-23 21:53 编辑

一下是config.ini文件的内容:

0=a
1=aa
2=aa
3=aa
4=a
5=bn
6=sdf
7=sdg
8=dfgdf
9=kljk
10=hjik

想要删除重复的数值的整个行,比如3个"aa" ,只保留一个"aa"

3mile 发表于 2011-8-23 21:46:42

http://www.autoitx.com/forum.php?mod=viewthread&tid=17174&fromuid=7639113

tsys 发表于 2011-8-23 21:52:04

回复 2# 3mile


谢谢

3mile 发表于 2011-8-23 23:19:27

回复 3# tsys
#include <Array.au3>

$aNumbers=IniReadSection("config.ini","config")
_ArrayDisplay($aNumbers)
$aUnique = ArrayUnique($aNumbers,1,0,1)
_ArrayDisplay($aUnique)

If MsgBox(4,"","覆盖原文件(是)"&@CRLF&"新建INI文件(否)") = 6 Then
        IniDelete("config.ini","config")
        IniWriteSection("config.ini","config",$aUnique,1)
Else
        IniWriteSection("config2.ini","config",$aUnique,1)
EndIf

Exit



Func ArrayUnique($aArray, $iBase = 0, $oBase = 0, $iCol = 0);数组,开始索引,结束索引,列
    If Not IsArray($aArray) Then Return SetError(1, 0, 0)
    If UBound($aArray, 0) > 2 Then Return SetError(2, 0, 0)
    Local $oD = ObjCreate('Scripting.Dictionary')
    If @error Then Return SetError(4, 0, 0)       
    Local $dim2 = UBound($aArray, 2), $i
    If $dim2 Then ;2D array
      Local $dim1 = UBound($aArray, 1)
                Local $aUnique[$dim1][$dim2], $j=$iBase
                If $oBase=0 Then $oBase = $dim1-1
      For $i = $iBase to $oBase
            If Not $oD.Exists($aArray[$i][$iCol]) Then
                $oD.Add($aArray[$i][$iCol], 0)
                $aUnique[$j] = $aArray[$i]
                $aUnique[$j] = $aArray[$i]
                $j += 1
            EndIf
      Next
      ReDim $aUnique[$j]
                $aUnique=UBound($aUnique)
    Else ;1D array
      For $i In $aArray
            If Not $oD.Exists($i) Then $oD.Add($i, 0)
      Next
      Local $aUnique = $oD.Keys()
    EndIf
    $oD.RemoveAll
    $oD = ""
    Return SetError(0, 0, $aUnique)
EndFunc

tsys 发表于 2011-8-24 17:31:17

{:face (355):} 多谢3m
页: [1]
查看完整版本: 关于ini文件重复数值问题,请赐教【已解决】