Funktionen

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.