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