' Rangfunktion generisch ' T = beliebiger Datentyp (mit Type T as vor dem Include) ' T muss ein gültiges ' Operator<(w1 as T, w2 as T)As Integer ' Return ... (0 / -1) ' End Operator ' definiert haben ' Dies geht aktuell nicht mit Defaultparametern, weil der FB-Compiler Paramatervariablen ' der Sub/Function während der Defaultausdruck-Auswertung nicht kennt! ' Function KKleinste OverLoad(daten()As T, rangIndex As Integer, dStart As Integer = LBound(daten), _ ' dEnde As Integer = UBound(daten)) As T ' Daher die Variante mit Start- und Endindex ohne Defaultwert Function KKleinste OverLoad(daten()As T, rangIndex As Integer, dStart As Integer, dEnde As Integer) As T Dim sortInd(dStart To dEnde)As Integer, i As Integer, j As Integer For i = dStart To dEnde sortInd(i) = i Next i ' Sortierung, aber nur Indexe, nicht Daten selber For i = dStart To dEnde - 1 For j = i + 1 To dEnde If daten(sortInd(j)) < daten(sortInd(i)) Then ' Nicht Daten selber, sondern nur Indexe tauschen Swap sortInd(i), sortInd(j) EndIf Next j Next i KKleinste = daten(sortInd(dStart + rangIndex - 1)) End Function ' und als Ersatz dafür eine solche Überladung als Alternative (funktioniert problemlos) Function KKleinste OverLoad(daten()As T, rangeIndex As Integer) As T Return KKleinste(daten(), rangeIndex, LBound(daten), UBound(daten)) End Function