; #FUNCTION# ;============================================================================================= ; ; Name...........: FindDuplicate_DeleteArray ; Description ...: Findet Elemente deren Name mehrmals vorkommt ; Syntax.........: FindDuplicate_DeleteArray($avArray [, $Rein = 0]) ; Parameters ....: $avArray - Array1D [ $Rein - Array Doppelte einträge entfernen 0-nein / 1-Ja] ; Return values .: Erfolg - 1D-Array mit den Doppelten Elemente o. 1D-Array ohne den Doppelten Elemente ; Fehler - Gibt -1 zurück und setzt @error: ; |1 - Fehler beim erstellen der Collections ; |2 - Kein 1DArray ; Author ........: Idee von AspirinJunkie / [ created by Kleiner27 www.AutoIT.de ] ; Modified.......: ; Remarks .......: Benötigt .Net für Collections ; Related .......: ; Link ..........; ; Example .......; No ; [ created by Kleiner27 www.AutoIT.de ] 01.05.2010 ; ;========================================================================================================= Func FindDuplicate_DeleteArray(ByRef $avArray, $Rein = 0) Local $iEle = ObjCreate('System.Collections.Queue') If @error Then Return SetError(1, 1, -1) Local $iDub = ObjCreate('Scripting.Dictionary') If @error Then Return SetError(1, 2, -1) Local $iRad = ObjCreate('Scripting.Dictionary') If @error Then Return SetError(1, 3, -1) If (UBound($avArray, 0) <> 1) Then Return SetError(2, 0, '') Local $iDir, $iTmp, $iCount = 0 For $i = 0 To UBound($avArray) - 1 $iEle.Enqueue($avArray[$i]) $iDir = $iEle.Dequeue If $iDub.Exists($iDir) Then If $iRad.Exists($iDir) Then $iTmp = $iRad($iDir) $iRad.Remove($iDir) $iRad.Add($iDir, $iTmp & '[' & $i) Else $iRad.Add($iDir, '[' & $iDub($iDir) & '[' & $i) EndIf Else $iDub.Add($iDir, $i) EndIf Next Local $R_Array[$iRad.Count], $Tmp_Array If ($Rein) Then For $i In $iRad.Keys $Tmp_Array = StringSplit(StringTrimLeft($iRad($i), 1), '[') If IsArray($Tmp_Array) Then For $i = 1 To UBound($Tmp_Array) - 2 $avArray[$Tmp_Array[$i]] = '' Next EndIf Next $Tmp_Array = '' If IsString($Tmp_Array) Then For $_i_ In $avArray If ($_i_ > '') Then $Tmp_Array &= '|' & $_i_ Next EndIf $Tmp_Array = StringSplit(StringTrimLeft($Tmp_Array, 1), '|') If IsArray($Tmp_Array) Then For $i = 0 To UBound($Tmp_Array) - 2 $Tmp_Array[$i] = $Tmp_Array[$i + 1] Next ReDim $Tmp_Array[UBound($Tmp_Array) - 1] Return $Tmp_Array EndIf EndIf For $i In $iRad.Keys $R_Array[$iCount] = $i & ' ' & $iRad($i) $iCount += 1 Next Return $R_Array EndFunc ;==>FindDuplicate_DeleteArray