|
Eine Funktion ist im Gegensatz zur Prozedur um einen Rückgabewert erweitert. Der Rückgabewert wird über den Bezeichner "Result" zugewiesen. Der Typ einer Funktion ist eindeutig und wird vom Programmierer festgelegt. Er entspricht den üblichen Variablentypen String, Integer, Double, Boolean usw. Funktionen können verschachtelt sein, d.h. in einer Funktion kann eine weitere, lokale Funktion deklariert werden, die wiederum eine lokale Funktion enthält. Funktion können wie Prozeduren rekursiv aufgerufen und durch den Befehl Exit an jeder Stelle abgebrochen werden.
Einfaches Beispiel für eine numerische Funktion:
Function Seven : Integer Result = 7 EndFunction
Diese Funktion liefert den konstanten Wert 7.
Im folgenden Beispiel wird mit der Funktion gerechnet:
Procedure Example var I : Integer
I = 5 * Seven EndProcedure
Ein weiteres Beispiel mit Übergabeparameter:
Function CleanAndUpperWord(S : String) : String Result = Trim(AnsiUpperCase(S)) EndFunction
Diese Funktion liefert einen Text zurück, der in Großbuchstaben umgewandelt wird und anschließend links- und rechtsstehende Leerzeichen gelöscht werden.
Folgendes Beispiel verdeutlicht die Funktion:
Procedure Example var Word : String
Word = " abcDefGh " ShowMessage(CleanAndUpperWord(Word)) EndProcedure
Der Aufruf von ShowMessage würde "ABCDEFGH" anzeigen.
Funktionen können auch in einander verschachtelt aufgerufen werden. In CleanAndUpperWord wird Trim und AnsiUpperCase in einem Zug eingesetzt. Hierbei ist zu beachten, daß von innen nach außen abgearbeitet wird: also erst AnsiUpperCase und dann Trim.
|