本帖最后由 3mile 于 2012-7-16 19:40 编辑
#include <File.au3>
#include <array.au3>
$begin = TimerInit()
Local $arr
_FileReadToArray("1818901.txt", $arr)
$new_arr = ArrayUnique($arr)
FileWrite('重复检查结果.txt', _ArrayToString($new_arr, @CRLF) & @CRLF)
ShellExecute('重复检查结果.txt')
$dif = TimerDiff($begin)
MsgBox(0, "时间差,这个计时的精度比sleep高", $dif)
Func ArrayUnique($aArray, $iBase = 0, $oBase = 0, $iCase = 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)
Local $temp[UBound($aArray)]
If $dim2 Then ;2D array
Local $dim1 = UBound($aArray, 1), $aUnique[$dim1][$dim2], $j
For $i = 0 To $dim1 - 1
If Not $oD.Exists($aArray[$i][0]) Then
$oD.Add($aArray[$i][0], 0)
$aUnique[$j][0] = $aArray[$i][0]
$aUnique[$j][1] = $aArray[$i][1]
$j += 1
Else
If Not $oD.item($aArray[$i][0]) = $aArray[$i][1] Then $aUnique[$j - 1][1] = $aArray[$i][1]
EndIf
Next
ReDim $aUnique[$j][2]
Else ;1D array
For $i = 1 To UBound($aArray) - 1
If Not $oD.Exists($aArray[$i]) Then
$oD.Add($aArray[$i], $i)
$temp[$i] = $aArray[$i]
Else
$temp[$i] = $i & "行与" & $oD.item($aArray[$i]) & "行相同 ----" & $aArray[$i]
EndIf
Next
Local $aUnique = $oD.Keys()
EndIf
$oD.RemoveAll
$oD = ""
Return $temp
EndFunc ;==>ArrayUnique
|