Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )


Referenz - FUNCTION

Referenz-Navigation

 

Typ: Prozedur
Kategorie: Programmorganisation
Syntax A:

DECLARE FUNCTION Name [OVERLOAD] [Konvention] [ [LIB "DLLName"] _
   ALIAS "AliasName"] [ (Parameterliste) ] [EXPORT]

Syntax B:

[{PRIVATE | PUBLIC }] FUNCTION Name [OVERLOAD] [Konvention] _
   ([Parameterliste]) [STATIC] AS Rückgabetyp
   ' Anweisungen
END SUB

Eine FUNCTION ist eine Prozedur, die einen Wert an das Hauptprogramm zurückgibt. Siehe auch SUB zum Thema Prozeduren.

Eine FUNCTION kann als erweiterte Form einer SUB angesehen werden; im Gegensatz zu einer solchen kann eine FUNCTION auch einen Wert zurückgeben. Das bedeutet, dass ihr Bezeichner wie eine Variable eingesetzt wird, deren Wert abhängig von verschiedenen Parametern wechselt. BefehlsreferenzeintragCOS ist ein Beispiel für eine Funktion.

'Name' ist der Bezeichner, unter dem die FUNCTION aufgerufen wird.

'Parameterliste' ist eine Liste der Form

[ {BYVAL | BYREF } ] [Parameter1] AS [CONST] Typ [= Wert]   [, _
   [ {BYVAL | BYREF } ] [Parameter2] AS [CONST] Typ [= Wert] ] [, ...]

'Parameter1', 'Parameter2', ... sind die Parameter, die an die Funktion übergeben werden. Parameter (auch Argumente genannt) sind Variablen (bzw. ihre Werte), die in der FUNCTION verwendet werden können. Siehe auch Parameterübergabe. Nur innerhalb der DECLARE-Zeile kann der Bezeichner des Parameters ausgelassen werden; der Datentyp muss immer angegeben werden.

Sollte '[CONST]' angegeben werden, kann der Wert zwar gelesen, die Variable aber nicht mehr beschrieben werden.

'Typ' ist der Datentyp des übergebenen Parameters; siehe Datentypen. Auch UDTs (user defined types; siehe TYPE (UDT)) können verwendet werden.

Durch das '= Wert' wird ein Parameter als optional deklariert; er kann beim Aufruf der Prozedur ausgelassen werden. In diesem Fall wird an die FUNCTION für diesen Parameter 'Wert' übergeben. Das VisualBASIC-Äquivalent heißt OPTIONAL.

BefehlsreferenzeintragBYVAL und BefehlsreferenzeintragBYREF regeln die Art der Parameterübergabe an die FUNCTION. Siehe dazu auch BefehlsreferenzeintragOPTION BYVAL.

Zu 'Konvention' siehe die Referenz-Stichwörter CDECL, PASCAL und STDCALL.

Siehe den entsprechenden Referenz-Eintrag zu OVERLOAD.

'Rückgabetyp' ist der Datentyp des Rückgabewerts. Auch UDTs (user defined types; siehe TYPE (UDT)) sind erlaubt. Siehe dazu weiter unten.

Die STATIC-Klausel bewirkt, dass alle Variablen innerhalb der FUNCTION zwischengespeichert werden. Das bedeutet, dass die Werte von Variablen, die in der FUNCTION verwendet werden, nach einem Aufruf nicht verloren gehen, sondern beim nächsten Aufruf der FUNCTION wieder verfügbar sind. Siehe auch STATIC (Schlüsselwort).

Zu BefehlsreferenzeintragEXPORT siehe den entsprechenden Eintrag in dieser Referenz.

Der Wert der FUNCTION kann von übergebenen Parametern abhängig sein. FUNCTIONs werden dazu verwendet, häufig auftretende Berechnungen zusammenzufassen. Es kann auch ein Pointer zurückgegeben werden.

Eine FUNCTION ist dasselbe wie eine SUB, abgesehen von der Möglichkeit, Werte zurückzuliefern. Der Wert einer Funktion kann auf dreierlei Weise gesetzt werden:

Es gibt einige gute Gründe, in Ihrem Programm FUNCTIONs einzusetzen:

Der Rückgabewert einer FUNCTION kann beim Aufruf auch ignoriert werden. Dies kann dann sinnvoll sein, wenn die FUNCTION z.B. darüber informiert, ob ihr Code erfolgreich ausgeführt wurde. Um den Rückgabewert einer Funktion zu ignorieren, setzen Sie diese einfach wie eine SUB ein.

Beispiel:

DECLARE FUNCTION twice (x)

FUNCTION twice (x)
   RETURN x * 2
   PRINT "Diese Zeile wird nie ausgegeben"
END FUNCTION

PRINT twice (10) 'Gibt 20 aus, das Doppelte von 10

Eine Function kann auch einen ganzen UDT zurückgeben:

TYPE udt
   v1 AS INTEGER
   v2 AS INTEGER
END TYPE

DECLARE FUNCTION bla(foo AS INTEGER, bar AS INTEGER) AS udt

DIM var AS udt
var = bla(1, 3)

PRINT "Var: v1 ="; var.v1; ", v2 ="; var.v2
'Ausgabe: "Var: v1 = 10, v2 = 30"
SLEEP


FUNCTION bla(foo AS INTEGER, bar AS INTEGER) AS udt
   DIM var AS udt
   var.v1 = foo*10
   var.v2 = bar*10
   bla = var
END FUNCTION

Einem Funktionsnamen können mehrere Prozeduren zugewiesen werden; siehe OVERLOAD.

Seit FreeBASIC v0.17 kann eine FUNCTION auch Teil eines UDTs sein:

Type MyUDT
   x As Integer
   y As Integer
   z As Integer

   Declare Function SumOfAll ()
End Type

Function MyUDT.SumOfAll () As Integer
   Return This.x + This.y + This.z
End Function

Dim var As MyUDT
With var
   .x = 5
   .y = 10
   .z = -3
End With

? var.SumOfAll
GetKey

Ausgabe:

12

Unterschiede zu QB:

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
BefehlsreferenzeintragSUB, BefehlsreferenzeintragPROPERTY, BefehlsreferenzeintragDECLARE, BefehlsreferenzeintragOVERLOAD, BefehlsreferenzeintragEXIT, BefehlsreferenzeintragEND, BefehlsreferenzeintragBYVAL, BefehlsreferenzeintragBYREF, BefehlsreferenzeintragSHARED, BefehlsreferenzeintragPRIVATE (Klausel), BefehlsreferenzeintragPUBLIC (Klausel), BefehlsreferenzeintragVA_ARG, BefehlsreferenzeintragProzeduren, BefehlsreferenzeintragFunctions, BefehlsreferenzeintragParameterübergabe


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 29.07.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 03.07.2010 von RedakteurMOD gespeichert.
  Versionen Versionen