Referenz - DECLARE
Syntax A:
DECLARE SUB Name [Aufrufkonvention] [OVERLOAD] [[LIB "DLLName"] _
ALIAS "AliasName"] [ ( _
[{BYVAL | BYREF } ] [Parameter1] AS Typ [= Wert] [, _
[{BYVAL | BYREF } ] [Parameter2] AS Typ [= Wert] ] [, ...] ) ]
Syntax B:
DECLARE FUNCTION Name [Aufrufkonvention] [OVERLOAD] [[LIB "DLLName"] _
ALIAS "AliasName"] [ ( _
[{ BYVAL | BYREF } ] [Parameter1] AS Typ [= Wert] [, _
[{ BYVAL | BYREF } ] [Parameter2] AS Typ [= Wert] ] [, ...] ) AS Rückgabetyp
Typ: Anweisung
Kategorie: Programmorganisation
Anmerkung zur Syntax: Unterstriche (_) am Zeilenende werden von FreeBASIC so interpretiert, als wäre die Zeile nicht unterbrochen; dies dient nur der besseren Übersichtlichkeit und hat letztenendes keine Auswirkungen auf die Programmausführung.
DECLARE deklariert eine neue Prozedur. Dies ist notwendig, wenn die Prozedur aufgerufen werden soll, bevor sie im Quellcode definiert wird.
- 'Name' ist der Bezeichner, unter dem die
SUB bzw.
FUNCTION aufgerufen wird. - 'Aufrufkonvention' ist ein Schlüsselwort, das angibt, in welcher Reihenfolge die Parameter übergeben werden sollen. Möglich sind:
STDCALL,
CDECL und
PASCAL. - 'OVERLOAD' erlaubt, Prozeduren mit unterschiedlicher Parameterliste, aber gleichem Prozedurnamen deklarieren. Siehe dazu den Referenzeintrag
OVERLOAD. - 'DLLName' ist der Name der LIB/DLL, in der sich die Prozedur befindet.
- 'AliasName' ist der Name, unter dem die Prozedur in der LIB/DLL aufgeführt ist. Da diese manchmal Zeichen enthalten, die unter FreeBASIC nicht erlaubt sind, ist es möglich, ihnen "einen anderen Namen zu geben".
- 'Parameter1', 'Parameter2', '...' stehen für Parameter, die an die Prozedur übergeben werden sollen (siehe auch
Parameterübergabe. Ihre Namen sind eigentlich unbedeutend, und können ausgelassen werden. Eine Deklaration, in der die Parameter bezeichnet werden, ist jedoch einfacher nachzuvollziehen. - 'Typ' ist der Datentyp der übergebenen Parameter; siehe
Datentypen. - Durch die Klausel '= Wert' wird ein Parameter als optional deklariert; er kann beim Aufruf der Prozedur ausgelassen werden. In diesem Fall wird an die Prozedur für diesen Parameter 'Wert' übergeben. 'Wert' darf ein einfacher Ausdruck sein, der Konstanten, Operatoren und Funktionen, jedoch keine Variablen enthält.
- 'BYVAL' bzw. 'BYREF' gibt an, ob der Parameter by value oder by reference übergeben wird. Näheres dazu finden Sie unter
BYVAL. - 'Rückgabetyp' hinter der Parameterliste ist der Typ des Rückgabewertes der FUNCTION.
DECLARE wird auch bei
UDTs verwendet, um einen
CONSTRUCTOR bzw.
DESTRUCTOR, eine
PROPERTY oder die Überladung von
OPERATORen zu deklarieren.
Werden Prozeduren vor ihrem ersten Aufruf definiert, dann ist keine vorherige Deklaration nötig. Jedoch kann eine kompakt zusammenstehende Deklaration aller im Programm auftretenden Prozeduren zur Lesbarkeit des Quellcodes beitragen.
Beispiel:
DECLARE FUNCTION twice (AS INTEGER) AS INTEGER
DECLARE SUB PrintTimes (AS STRING, BYVAL AS INTEGER = 1)
FUNCTION twice (x AS INTEGER) AS INTEGER
twice = x * 2
END FUNCTION
SUB PrintTimes (ToPrint AS STRING, BYVAL times AS INTEGER = 1)
FOR i AS INTEGER = 1 TO times
PRINT ToPrint
NEXT
END SUB
PRINT "Das Doppelte von 42 ist: "; twice(42)
PrintTimes "Einmal"
PrintTimes "Zehn mal", 10
Sleep
DECLARE-Anweisungen können direkt an den Beginn eines BAS-Moduls gesetzt werden. Häufig werden sie jedoch in eine eigene Datei ausgelagert und dann über
#INCLUDE eingebunden. Für gewöhnlich erhält eine solche Datei die Dateiendung .bi
Seit FreeBASIC v0.15b muss die ALIAS-Klausel verwendet werden, wenn eine Prozedur aus einer LIB/DLL eingebunden wird; in früheren Versionen konnte die ALIAS-Klausel ausgelassen werden; in diesem Fall wurde der Prozedurbezeichner (hier 'Name') als ALIAS-Name verwendet.
Unterschiede unter den FB-Dialektformen:
- In der Dialektform
-lang qb und -lang deprecated werden Parameter standardmäßig
BYREF übergeben. - Deklarationen innerhalb eines
TYPE-Blocks sind nur in der Dialektform -lang fb erlaubt.
Unterschiede zu QB:
In FreeBASIC ist die Angabe der Parameternamen optional.
Siehe auch:
SUB,
FUNCTION,
STATIC (Klausel),
PASCAL,
CDECL,
STDCALL,
BYVAL,
BYREF,
SHARED,
LIB,
ALIAS,
OVERLOAD,
OPERATOR,
EXPORT,
Prozeduren,
Parameterübergabe
| Zusätzliche Informationen und Funktionen | ||||
|---|---|---|---|---|
|
||||




FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!
Versionen