;#_MaxEx-FUNKTION-Start#====================================================================================== ;Funktion:.................._SortMinMax ;Autor:.....................Ealendil (www.AutoIt.de) ;Beschreibung:..............gibt bei Erfolg ein Array zurück, welches von der höchsten ; zur kleinsten bzw. umgekehrt sortiert ist. ;Infos:.....................$Nr_1_to_Nr_n = Hier die Zahlen zum Vergleichen eingeben, ; diese müssen als String ("1,2,3,...") oder ('1,2,3,...') ; eingegeben werden. ; ; $SortMax = 1 bedeutet das die Funktion ein Array zurückgibt, welches ; folgendermaßen ausschaut: ; $Array[0] = Anzahl der zurückgegebenen Zahlen ; $Array[1] = höchste Zahl ; $Array[2] = zweithöchste Zahl ; $Array[3] = dritthöchste Zahl ; ; usw. ; $Array[n] = kleinste Zahl ; sollte $Sort_Max <> 1 (keine 0 verwenden, man kann allerdings Stringzahlen verwenden) ; sein, so wird das Array umgekehrt sortiert zurückgegeben. ; $Split: hierbei kann angegeben werden, welche Zeichen zum trennen ; der Zahlen fungieren sollen, wird keines angegeben, so wird "," ; verwendet, man muss (falls ein String verwendet wird) jede Zahl mit den in ; $Split angegebenen Zeichen trennen. ;Return-Werte:..............ein Array, welches von der höchsten zur kleinsten bzw. umgekehrt ; sortiert ist. ; $Array[0] gibt die Anzahl der zurückgegeben Zahlen an. ; Als Trennzeichen fungieren alle Zeichen, welche bei $Split ; angegeben werden, sollten keine Angegeben, so wird "," verwendet. ;@Error-Werte:............. ; @Error = 0, kein Fehler ; 1, $Nr_1_to_Nr_n ist kein String ,falls ein String verwendet wird. ; 2, $Sort_Max ist entweder keine Zahl oder 0. ;#_MaxEx-FUNKTION-End#======================================================================================== Func _SortMinMax($Nr_1_to_Nr_n, $Sort_Max = 1, $Split = '') ;Prüft ob $Sort_Max ein Integer ist, falls nicht, wird die Funktion verlassen. If Not IsInt($Sort_Max) Then $Sort_Max = Number($Sort_Max) If $Sort_Max = 0 Then Return SetError(2,0,0) EndIf Local $i, $Str = '', $i_i, $i_i_i, $i_Copy = 0 ;Prüft ob Zeichen für $Split vorhanden sind, falls nicht, dann $Split = ','. If $Split = '' Then $Split = ',' ;Prüft ob $Nr_1_to_Nr_n ein Array ist. Falls dies zutrifft, wird ein String erstellt, ;welches jedes Zeichen, in $Split eingegebenen Zeichen, voneinander trennt. If IsArray($Nr_1_to_Nr_n) Then Local $Str_Trim = '' For $i = 0 To UBound($Nr_1_to_Nr_n) - 1 $Str_Trim &= $Nr_1_to_Nr_n[$i] & $Split Next $Str = StringTrimRight($Str_Trim, 1) Else $Str = $Nr_1_to_Nr_n ;Prüft ob $Str ein String ist, falls nicht wird die Funktion verlassen. If not IsString($Str) Then Return SetError(1, 0, 0) EndIf ;"Haupt"-String wird nun gesplitet. Local $sp = StringSplit($Str, $Split, 0), $aMax[$sp[0] + 1] ;Weißt $aMax[0] die Anzahl der Elemente zu und weißt jedem Element in $Sp die Nummer zu, ;die das jeweilige Element darstellt. $aMax[0] = $sp[0] For $i = 0 To $sp[0] $sp[$i] = Number($sp[$i]) Next ;Weißt jedem Element in $aMax -9999999999999999999999... zu, da dies die kleinste Zahl ist, ;die man bei Autoit eingeben kann, das Zeilenmaximum (4095) zu überschreiten. For $i = 1 To $sp[0] $aMax[$i] = -99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 Next ;Sortiert das nun alle Zahlen von der höchsten zur kleinsten und weißt ihnen die entsprechenden Elemene ;in $aMax zu. For $i_i = 1 To $sp[0] For $i = 1 To $sp[0] If $sp[$i] > $aMax[$i_i] Then $aMax[$i_i] = $sp[$i] $i_i_i = $i EndIf Next $sp[$i_i_i] = -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 Next ;Sollte der $Sort_Max Parameter <> 1 sein, also, soll das Array von der kleinsten zur höchsten Zahl ;sortiert sein, dann wird nun ein weiteres Array erstellt, welches jedes Element von $aMax enthält und ;alle Zahlen entsprechend miteinander vertauscht. ;Anschließend wird das neu sortierte Array zurückgegeben. If Not $Sort_Max = 1 And Not $Sort_Max = 0 Then Local $aMax_Copy[$sp[0] + 1] For $i = 1 To $aMax[0] $aMax_Copy[$i] = $aMax[$i] Next For $i = $aMax[0] To 1 Step -1 $i_Copy += 1 $aMax[$i] = $aMax_Copy[$i_Copy] Next Return $aMax Else Return $aMax EndIf EndFunc ;==>_SortMinMax #include $test = _SortMinMax('2,34,356256,7843,9787945.67,-4,-245246,346', 1, ',') _ArrayDisplay($test) $try = _SortMinMax('-2,-34453.67434,57342', 3, ',') _ArrayDisplay($try) Dim $array[2] $array[0] = '1' $array[1] = 2 $tryit=_SortMinMax($array) _ArrayDisplay($tryit)