Menü

Funktionen (Pascal-Script)

Zurück | Ebene zurück

Eine Funktion unterscheidet sich nicht wesentlich von einer Prozedur. Es gibt nur eine kleine, aber feine Erweiterung: Eine Funktion liefert einen Wert zurück. Das muss beim Erstellen einer Funktion, aber auch bei deren Aufruf beachtet werden. Dadurch dass eine Funktion einen Wert zurückliefert kann man erheblich mehr damit machen als mit einer Prozedur. Dies wird vor allem unter Beispiele verdeutlicht.
Was es heißt, die Funktion liefere einen Wert zurück, verdeutlich man sich am besten indem man sich die Funktionsaufrufe und Beispiele ansieht.

Die aller einfachste Funktion sieht etwa so aus:

function Beispiel_Funktion_1: Boolean;
    begin
	if (Rechnung['VkBrutto'] > 0) then Result:=true
	else Result:=false;
    end;

Diese Funktion würde true zurückliefern, wenn der Rechnungsbetrag größer 0 ist, false wenn der Rechnungsbetrag kleiner 0 ist (also bei einer Gutschrift).
Hier fällt schon auf, dass es eine Variable „Result“ gibt. Diese bekommt immer den Wert zugewiesen, der zurückgegeben werden soll. Die Variable „Result“ existiert in allen Funktionen und ist automatisch von dem Typ der im Funktionskopf hinter dem Doppelpunkt definiert wurde (hier: Boolean).

Genau wie bei Prozeduren kann man Funktionen Werte übergeben:

function Beispiel_Funktion_2 (I: Integer): String;
    begin
	case I of
 	    1: Result:='Es wurde 1 übergeben.';
	    2: Result:='Es wurde 2 übergeben.';
	    else: Result:= 'Es wurde weniger als 0 oder mehr als 2
			  übergeben.';
	end;
    end;

Diese Funktion würde anhand des übergebenen Integer-Wertes I einen bestimmten String zurückgeben. Die zu übergebenden Werte werden genau wie bei Prozeduren in Klammern, getrennt durch Semikolon, angegeben (Name1: Typ1; Name2: Typ2). Der Typ des Rückgabewerts folge dahinter nach dem Doppelpunkt.

Natürlich kann man auch mehrere Werte übergeben, zurückliefern kann die Funktion freilich nur einen Wert eines bestimmten Typs:

function Beispiel_Funktion_3 (A: Integer; B: Boolean; C: String): String;
    begin
 	if B then
 	    begin
		Result:= C;
		while A > 0 do
		    begin
			Result:= Result + '!?';
			A:= A - 1;
     		    end;
 	    end
	else
	    begin
		case A of
		   1: Result:= C + ' ;-)) ' ;
		   2: Result:= C + ' :-(( ' ;
		   3: Result:= C + ' ;-|  ' ;
		   else Result:= '< ' + c + '>';
		end;
	    end;
    end;

Ja nachdem of B true oder false ist stellt diese Funktion etwas mit dem String C an und gibt das Ergebnis zurück.

Mehr Beispiele und praxisnahe Anwendungen finden Sie unter Beispiele.

Wie man eine Funktion aufruft, das finden Sie hier.