FUNCTION-Befehl

Kennzeichnet den Anfang der Definition einer benutzerdefinierten Funktion.

FUNCTION FunctionName 
   [LPARAMETERS parameter1[,parameter2},...]
   Commands 
   [RETURN [eExpression]]
ENDFUNC

oder

FUNCTION FunctionName([parameter1[,parameter2},...])
   Commands 
   [RETURN [eExpression]]
ENDFUNC

Parameter

  • FunctionName
    In Visual FoxPro können Funktionsnamen aus bis zu 254 Zeichen bestehen.

    Um in FoxPro für Macintosh einen Programmdateinamen mit mehr als 10 Zeichen von einem Funktionsnamen zu unterscheiden, der mit denselben 10 Zeichen beginnt, muss der Programmdateiname in Anführungszeichen eingeschlossen werden oder nach dem Programmdateinamen eine Dateinamenerweiterung angegeben werden.

Hinweise

In vielen Programmen werden bestimmte Routinen häufig wiederholt. Sie können die Größe und Komplexität von Programmen reduzieren und die Pflege von Programmen vereinfachen, indem Sie häufig verwendete Routinen als eigenständige Funktionen definieren.

FUNCTION FunctionName ist eine Anweisung innerhalb eines Programms. Dieser Befehl kennzeichnet den Anfang einer Funktion in einem Programm und weist der Funktion einen Namen zu.

Nach FUNCTION FunctionName folgt eine Reihe von Visual FoxPro-Befehlen, die die Funktion selbst bilden. Den RETURN-Befehl können Sie an jeder Stelle der Funktion einfügen, um die Kontrolle an das aufrufende oder ein anderes Programm zurückzugeben oder um einen Wert zu definieren, den die benutzerdefinierte Funktion zurückgibt. Wenn Sie in der Funktion keinen RETURN-Befehl einfügen, wird beim Verlassen der Funktion automatisch ein RETURN-Befehl ausgeführt. Wenn mit dem RETURN-Befehl kein Wert zurückgegeben wird (oder wenn dieser Befehl wie oben automatisch ausgeführt wird), weist Visual FoxPro dem Rückgabewert den Wert Wahr (.T.) zu.

Die Funktion wird mit dem ENDFUNC-Befehl abgeschlossen. Dieser Befehl ist optional, d.h. die Funktion wird auch verlassen, wenn ein anderer FUNCTION-Befehl oder ein PROCEDURE-Befehl folgt oder wenn das Ende der Programmdatei erreicht wird.

Kommentare können hinter FUNCTION und ENDFUNC in dieselbe Zeile gestellt werden. Diese Kommentare werden beim Kompilieren und Ausführen des Programms ignoriert.

In einer Programmdatei kann nach einer benutzerdefinierten Funktion kein normaler ausführbarer Programmcode eingefügt werden. Hinter dem ersten FUNCTION- oder PROCEDURE-Befehl der Datei dürfen nur noch benutzerdefinierte Funktionen, Prozeduren und Klassendefinitionen folgen.

Wenn Sie DO mit einem Funktionsnamen eingeben, geht Visual FoxPro bei der Suche nach der Funktion in der folgenden Reihenfolge vor:

  1. Visual FoxPro durchsucht die Datei, die den DO-Befehl enthält.
  2. Wenn die Funktion dort nicht gefunden wird, durchsucht Visual FoxPro die offenen Prozedurdateien. Prozedurdateien werden mit SET PROCEDURE geöffnet.
  3. Wenn die Funktion in keiner offenen Prozedurdatei gefunden wird, durchsucht Visual FoxPro nacheinander die Programme in der Ausführungsfolge. Zuerst wird die zuletzt ausgeführte Programmdatei durchsucht und zuletzt die Programmdatei, die zuerst ausgeführt wurde.
  4. Wird die Funktion auch hierbei nicht gefunden, sucht Visual FoxPro nach einem eigenständigen Programm. Wenn eine entsprechende Programmdatei gefunden wird, wird das Programm ausgeführt. Andernfalls generiert Visual FoxPro eine Fehlermeldung.

Geben Sie im DO-Befehl die IN-Klausel an, um eine Funktion auszuführen, die Bestandteil einer bestimmten Datei ist.

Standardmäßig werden Parameter als Werte an Funktionen übergeben. Weitere Informationen zur Parameterübergabe an Funktionen in Form von Verweisen finden Sie unter SET UDFPARMS. An eine Funktion können maximal 27 Parameter übergeben werden. Die Übergabe von Parametern an eine Funktion erfolgt entweder mit einer PARAMETERS- oder LPARAMETERS-Anweisung in einer Funktion oder über eine Parameterliste, die unmittelbar hinter FUNCTION FunctionName eingefügt werden muss. Die Parameter müssen hierbei in Klammern stehen und durch Kommas voneinander getrennt werden.

Informationen zum Verwenden des FUNCTION-Befehls beim Erstellen von Klassen finden Sie in der Hilfe unter DEFINE CLASS und Explizite Typenangaben in Klassen-, Objekt- und Variablencode.

Beispiel

In diesem Beispiel wird eine benutzerdefinierte Objektklasse mit dem Namen Hello erstellt und eine Funktionsmethode SayHello hinzugefügt. Die Methode SayHello gibt die Zeichenfolge Hello World zurück, die mit der MESSAGEBOX-Funktion angezeigt wird. Anmerkung: Der Code für die Klassendefinition wird nach dem Programmcode eingefügt, mit dem die Objektinstanz gebildet wird.

Local oHello
oHello=CREATEOBJECT("Hello")
=MESSAGEBOX(oHello.SayHello(),48)
RELEASE oHello

* Class definition code
DEFINE CLASS Hello AS CUSTOM
 FUNCTION SayHello
  RETURN "Hello World"
 ENDFUNC
ENDDEFINE

Siehe auch

LPARAMETERS | PARAMETERS | PARAMETERS( ) | PRIVATE | PROCEDURE | PUBLIC | RETURN | SET PROCEDURE | SET UDFPARMS