Seite 1 von 1
Min- / Max - Function
Verfasst: So, 23.09.2012 13:36
von Shirkan
Liee Leute,
gibt es in StarBasic keine Min- / Max - Funktion? Wenn nicht, hat jemand so etwas mal programmiert oder weiss wo so etwas steht?
Danke für Eure Hilfe
Gruß Markus
Re: Min- / Max - Function
Verfasst: So, 23.09.2012 14:16
von juetho
Hallo Markus, im ersten Moment war ich auch verblüfft: Diese Funktionen gibt es offensichtlich nicht. Beim zweiten Nachdenken ist das aber auch verständlich: Sie können nur das Ergebnis innerhalb eines bestimmten Bereichs liefern; dieser Bereich muss geeignet definiert sein. Davon sind auch die Vergleichsverfahren abhängig: Zahlen und auch Datumswerte werden anders geordnet als Texte.
Du musst also zunächst sagen, für welchen Bereich du diese Funktionen benötigst. Für Calc-Funktionen gibt es sie. Für andere Zwecke können dir vielleicht Tipps gegeben werden; bei Datenbanken beispielsweise kann MIN/MAX für Spalten bestimmt und über SELECT zurückgegeben werden. Jürgen
Re: Min- / Max - Function
Verfasst: So, 23.09.2012 14:33
von Shirkan
Hallo Jürgen,
ich benötige die Funktion in einer Programmroutine. Das ist also völlig unabhängig von einem Zellbereich. Der Wunsch wäre eine beliebige Anzahl von Argumenten zu haben und dann den maximalen Wert zu erhalten. Im Grunde ist es ja einfach für eine bestimmte Anzahl von Argumenten
Code: Alles auswählen
Function Max(Item1 as Integer, Item2 As integer)
If Item1 >= Item2 then
Max = Item1
Else
Max = Item2
EndIf
End Function
Ich weiss nur nicht wie ich die Anzahl der Argumente variabel halten kann.
Gruß Markus
Re: Min- / Max - Function
Verfasst: So, 23.09.2012 16:15
von juetho
Shirkan hat geschrieben:Ich weiss nur nicht wie ich die Anzahl der Argumente variabel halten kann.
Dafür gibt es grundsätzlich zwei Möglichkeiten. Das eine sind
optionale Parameter bei Definition und Aufruf der Funktion, siehe den Abschnitt "Optional Parameters" (Seite 32) im
Basic Programmers Guide. Das andere Verfahren ist in deinem Fall erheblich besser, weil alle Parameter vom gleichen Typ sind, nämlich ein
Array of Integers, das du einfach in einer Schleife durchlaufen kannst; mehr dazu steht bei
Andrew's Macros im Abschnitt Language > Variable > Arrays.
Solange dein Array nicht mehrere Hundert Einträge hat, dürfte die Zeit der Prüfung nicht zu spüren sein. Viel Erfolg! Jürgen
Re: Min- / Max - Function
Verfasst: So, 23.09.2012 17:56
von Karolus
Hallo
Code: Alles auswählen
Sub Main
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
args() = array(-5, 2, 8)
result = oFunctionAccess.callFunction( "MIN", args() )
print result
End Sub
Noch Fragen?
Karolus
Re: Min- / Max - Function
Verfasst: So, 23.09.2012 21:02
von Shirkan
Liebe Leute,
ich komme mit dem Übergeben eines Arrays nicht zurecht. Kann da mal jemand drauf schauen?
Code: Alles auswählen
Sub Main
Print Übergabetest (1,2,8)
End Sub
Function Übergabetest (args() As Interger) As Integer
Übergabetest = args(1)
End Function
Gruß Markus
Re: Min- / Max - Function
Verfasst: Mo, 24.09.2012 08:01
von Shirkan
Ok, ich habe die Umlaute entfernt und die Variablendeklaration mit Integer entfernt. Leider wird mir jede einzige Zahl des Arrays mit 1 angezeigt:
Code: Alles auswählen
Sub Main
Print uebergabetest (Array(1,2,8))
End Sub
Function uebergabetest (args()) As Integer
uebergabetest = args(1)
End Function
Gruß Markus
Re: Min- / Max - Function
Verfasst: Mo, 24.09.2012 08:06
von Shirkan
Sorry,
hat sich erledigt, ich habe das "Array" in der Übergabe übersehen.
Dank an alle, die sich beteiligt haben-
Gruß Markus