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