; #FUNCTION# ;============================================================================================= ; ; Name...........: _ObjektAr2DDubDel ; Description ...: Findet Elemente deren Name mehrmals vorkommt und Löst dies aus ein 1D o. 2D Array ; Syntax.........: _ObjektAr2DDubDel($avArray) ; Parameters ....: $avArray - Array1D o. Array2D ; Return values .: Erfolg - 1D-Array o. Array2D mit den Doppelten Elemente ; ; Fehler - Gibt -1 zurück und setzt @error: ; |1 - Fehler beim erstellen der Collections ; ; Author ........: Kleiner27 www.AutoIT.de ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........; ; Example .......; No ; [ created by Kleiner27 www.AutoIT.de ] 06.05.2010 ; ;========================================================================================================= Func _ObjektAr2DDubDel(ByRef $avArray) Local $ScripDict = ObjCreate('Scripting.Dictionary') If @error Then Return SetError(1, 1, -1) Local $iTmp Local $TmpArray Local $iTmp_Save Local $TmpArrayReturn[1][2] Local $iEnd = UBound($avArray) Local $1D2D = UBound($avArray, 2) If @error = 2 Then $ScripDict.RemoveAll For $For In $avArray If Not $ScripDict.Exists($For) Then $ScripDict.Add($For, 0) Next Return $ScripDict.Keys() Else For $1D = 0 To $iEnd - 1 $TmpArray &= '|' For $2D = 0 To $1D2D - 1 $TmpArray &= $avArray[$1D][$2D] Next Next $TmpArray = StringSplit(StringTrimLeft($TmpArray, 1), '|') For $i = 1 To UBound($TmpArray) - 1 $iTmp = $TmpArray[$i] If Not $ScripDict.Exists($iTmp) Then $ScripDict.Add($iTmp, 0) $iTmp_Save &= '|' & $i - 1 & $iTmp EndIf Next $1D = 0 ReDim $TmpArrayReturn[$iEnd][$1D2D] $TmpArray = StringSplit(StringTrimLeft($iTmp_Save, 1), '|') For $i = 1 To UBound($TmpArray) - 1 For $2D = 0 To $1D2D - 1 $TmpArrayReturn[$1D][$2D] = $avArray[Number($TmpArray[$i])][$2D] Next $1D += 1 Next ReDim $TmpArrayReturn[$1D][$1D2D] Return $TmpArrayReturn EndIf EndFunc ;==>_ObjektAr2DDubDel