Hilfe für LibreOffice 7.2
Im Folgenden ist die grundsätzliche Verwendung von Prozeduren, Funktionen und Eigenschaften in LibreOffice Basic beschrieben.
Wenn Sie ein neues Modul erstellen, implementiert %PRODUKTNAME Basic automatisch ein Sub namens "Main". Dieser voreingestellte Name beeinflusst nicht die Reihenfolge oder den Startpunkt von einem %PRODUKTNAME Basic Projekt. Sie können die Sub-Routine problemlos umbenennen.
Für die Namen Ihrer öffentlichen Variablen, Unterprogramme, Funktionen und Eigenschaften gelten einige Einschränkungen. Sie dürfen nicht denselben Namen wie eines der Module der gleichen Bibliothek verwenden.
Prozeduren (Routinen Sub), Funktionen (Function) und Eigenschaften (Property) helfen Ihnen, einen strukturierten Überblick zu behalten, indem sie ein Programm in logische Teile unterteilen.
Ein Vorteil von Prozeduren, Funktionen und Eigenschaften ist, dass Sie einen einmal entwickelten Programmcode, der Task-Komponenten enthält, in einem anderen Projekt wiederverwenden können.
Variablen können an Prozeduren, Funktionen oder Eigenschaften übergeben werden. Die Funktion oder Eigenschaft Sub muss deklariert werden, um Parameter zu erwarten:
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' Ihr Code kommt hier hin
End Sub
Das Sub wird mit der folgenden Syntax aufgerufen:
[Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Die an Sub übertragenen Parameter müssen zu denen passen, die in der Deklaration von Sub angegeben sind.
Das gleiche Verfahren gilt für eine Funktion. Darüber hinaus geben Funktionen immer ein Funktionsergebnis zurück. Das Ergebnis einer Funktion wird definiert, indem der Rückgabewert dem Funktionsnamen zugewiesen wird:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' Ihr Code gehört hier hin
FunctionName=Result
End Function
Die Funktion wird mit der folgenden Syntax aufgerufen:
Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Properties combine the syntax of procedures and functions. A Property usually requires up to one parameter.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' Ihr Code gehört hier hin
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' Ihr Code gehört hier hin
_IsApproved = computed_value
End Property
Die Eigenschaft wird durch die folgende Syntax aufgerufen:
var = IsApproved
IsApproved = some_value
You can also use the fully qualified name to call a procedure, function or property:
[Call] Library.Module.Macro(), where Call is optional.
For example, to call the Autotext macro from the Gimmicks library, use the following command:
Gimmicks.AutoText.Main()
Parameter können entweder per Referenz oder per Wert an eine Prozedur, eine Funktion oder eine Eigenschaft übergeben werden. Sofern nicht anders angegeben, wird ein Parameter immer als Referenz übergeben. Das bedeutet, dass Sub, Function oder Property den Parameter bekommt und seinen Wert lesen und ändern kann.
Wenn Sie einen Parameter als Wert übergeben möchten, fügen Sie beim Aufruf von Sub, Function oder Property das Schlüsselwort ByVal vor dem Parameter ein, zum Beispiel:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' Ihr Code gehört hier hin
End Function
result = ReadOnlyParms(parm1, parm2)
In diesem Fall wird der ursprüngliche Inhalt des Parameters durch Function nicht verändert, da sie nur den Wert und nicht den Parameter selbst erhält.
Funktionen, Prozeduren oder Eigenschaften können mit optionalen Parametern definiert werden, beispielsweise:
Sub Rounding(number, Optional decimals, Optional format)
' Ihr Code gehört hier hin
End Sub
When you call a function or a subroutine, you may pass its arguments by position or by name. Passing by position means just listing the arguments in the order in which the parameters are defined in the function or subroutine. Passing by name requires you to prefix the argument with the name of the corresponding parameter followed by a colon and an equal sign (:=). Keyword arguments may appear in any order. Refer to Basic Replace() function for such examples.
When needing to pass less parameters, use keywords arguments. Passing values for fewer parameters by position requires to supply values for all parameters before them, optional or not. This ensures that the values are in the correct positions. If you pass the parameters by name - using keyword arguments - you may omit all other intermediate arguments.
Eine innerhalb von Sub, Function oder Property definierte Variable bleibt nur gültig, bis die Prozedur beendet wird. Dies wird als "lokale" Variable bezeichnet. In vielen Fällen benötigen Sie eine Variable, um in allen Prozeduren, in jedem Modul aller Bibliotheken oder nach Sub, Function oder Property gültig zu sein.
Global VarName As TYPENAME
Die Variable ist solange gültig, wie die LibreOffice-Sitzung andauert.
Public VarName As TYPENAME
Die Variable hat in allen Modulen Gültigkeit.
Private VarName As TYPENAME
Die Variable hat nur im Modul Gültigkeit.
Dim VarName As TYPENAME
Die Variable hat nur im Modul Gültigkeit.
Sie erzwingen, dass private Variablen modulübergreifend privat sind, indem Sie CompatibilityMode(True) setzen.
' ***** Module1 *****
Private myText As String
Sub initMyText
meinText = "Hallo"
Print "In Modul 1 : ", meinText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' Gibt jetzt einen leeren String zurück
' (oder löst einen Fehler für Option Explicit aus)
Print "Jetzt in Modul 2 : ", meinText
End Sub
Static VarName As TYPENAME
Die Variable behält ihren Wert bis zur nächsten Eingabe einer Function, Sub oder Property. Die Deklaration muss innerhalb von Sub, Function oder Property existieren.
Fügen Sie wie bei Variablen ein Typdeklarationszeichen nach dem Funktionsnamen oder den durch As angegebenen Typ und den entsprechenden Datentyp am Ende der Parameterliste ein, um den Rückgabetyp der Funktion oder Eigenschaft zu definieren Wert, zum Beispiel:
Function WordCount(WordText As String) As Integer