Local $a[5] = [3,2,8,78,9] Local $a1[1] = [-1] Local $a2[4] = [40,3,22,12] ; === erster Parameter für Min und Startindex der Arrays ==> hier also: 0 ConsoleWrite('Min: ' & _GetMinMaxNumber(0, $a2, 12, $a1, 5, 7, $a) & @CRLF) ; === erster Parameter für Max und Startindex der Arrays ==> hier also: '+0' ConsoleWrite('Max: ' & _GetMinMaxNumber('+0', $a2, 12, $a1, 5, 7, $a) & @CRLF & @CRLF) ; === Arrays mit Startindex 1 Local $a[5] = [4,56,78,23,47] Local $a1[3] = [2,352,-98] Local $a2[2] = [1,117] ConsoleWrite('Min: ' & _GetMinMaxNumber(1, $a, $a1, $a2) & @CRLF) ConsoleWrite('Max: ' & _GetMinMaxNumber('+1', $a, $a1, $a2) & @CRLF & @CRLF) ; === ohne Array ist erster Parameter nur für Wahl Min ('') oder Max ('+') ConsoleWrite('Min: ' & _GetMinMaxNumber('', '4', 8, 1+1+3, 12, '3.25', 5, 7, 'Text-String_wird_ignoriert') & @CRLF) ConsoleWrite('Max: ' & _GetMinMaxNumber('+', '4', 8, 1+1+3, 12, '3.25', 5, 7, 'Text-String_wird_ignoriert') & @CRLF) ; #FUNCTION# ==================================================================================================================== ; Name...........: _GetMinMaxNumber ; Description ...: Ermittelt den kleinsten Zahlenwert aus bis zu 10 übergebenen Einzelvariablen und/oder 1D-Arrays ; Syntax.........: _GetMinMaxNumber($sTypeIndx, $n1, $n2, $n3=Default, ... $n10=Default) ; Parameters ....: $sTypeIndx Start-Index übergebener Arrays mit Vorzeichen '+' für Rückgabe MaxNumber ; Für Rückgabe MinNumber braucht kein Vorzeichen übergeben werden. ; Werden keine Arrays verwendet, wird nur '+' für Max oder '' für Min übergeben. ; $n1...$n10 Einzelwerte und/oder 1D-Arrays ; Return values .: Erfolg kleinster/größter Zahlenwert aus allen Parametern ; Fehler Leerstring, @error: 1 ==> Einzelwert $n1 ist nicht numerisch ; Author ........: BugFix ( bugfix@autoit.de ) ; Remarks .......: Bei Verwendung von Arrays gilt für alle derselbe Startindex. ; Ist $n1 kein Array, muß der Wert zwingend numerisch/Zahlenstring sein. Andere Werte ; (auch innerhalb übergebener Arrays) werden ignoriert, wenn sie nicht numerisch/Zahlenstring sind. ; Als String übergebene Zahlen (Ganzzahlen, Float) werden beim Vergleich zu Number gewandelt. ; =============================================================================================================================== Func _GetMinMaxNumber($sTypeIndx, $n1, $n2, $n3=Default, $n4=Default, $n5=Default, $n6=Default, $n7=Default, $n8=Default, $n9=Default, $n10=Default) Local $min_max = $n1, $min_max2, $val, $max = 0 If StringLeft($sTypeIndx, 1) = '+' Then $max = 1 If $n2 == 'sub' Then If UBound($n1) = $sTypeIndx +1 Then Return $n1[UBound($n1) -1] $min_max = $n1[$sTypeIndx] For $i = $sTypeIndx +1 To UBound($n1) -1 If StringRegExp($n1[$i], '\A[-+]{0,1}\d+\.{0,1}\d*\z') Then $n1[$i] = Number($n1[$i]) Else ContinueLoop EndIf If $max Then If $n1[$i] > $min_max Then $min_max = $n1[$i] Else If $n1[$i] < $min_max Then $min_max = $n1[$i] EndIf Next Return $min_max EndIf If IsArray($min_max) Then $min_max = _GetMinMaxNumber($sTypeIndx, $min_max, 'sub') Else If StringRegExp($min_max, '\A[-+]{0,1}\d+\.{0,1}\d*\z') Then $min_max = Number($min_max) Else Return SetError(1,0,'') EndIf EndIf For $i = 2 To 10 $val = Eval('n' & $i) If IsKeyword($val) Then ExitLoop If IsArray($val) Then $min_max2 = _GetMinMaxNumber($sTypeIndx, $val, 'sub') If $max Then If $min_max2 > $min_max Then $min_max = $min_max2 Else If $min_max2 < $min_max Then $min_max = $min_max2 EndIf Else If StringRegExp($val, '\A[-+]{0,1}\d+\.{0,1}\d*\z') Then $val = Number($val) If $max Then If $val > $min_max Then $min_max = $val Else If $val < $min_max Then $min_max = $val EndIf EndIf EndIf Next Return $min_max EndFunc ;==>_GetMinMaxNumber