Verwendung von Prozeduren, Funktionen und Eigenschaften

Im Folgenden ist die grunds├Ątzliche Verwendung von Prozeduren, Funktionen und Eigenschaften in LibreOffice Basic beschrieben.

note

Wenn Sie ein neues Modul erstellen, implementiert LibreOffice Basic automatisch ein Sub namens "Main". Dieser voreingestellte Name beeinflusst nicht die Reihenfolge oder den Startpunkt von einem LibreOffice Basic Projekt. Sie k├Ânnen die Sub-Routine problemlos umbenennen.


note

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.

├ťbergabe von Variablen an Prozeduren, Funktionen oder Eigenschaften

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, ...)

Eigenschaften verbinden die Syntax von Prozeduren und Funktionen. Eine Eigenschaft ben├Âtigt f├╝r gew├Âhnlich bis zu einem 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
tip

Sie k├Ânnen auch vollqualifizierte Namen verwenden, um Prozeduren, Funktionen oder Eigenschaften aufzurufen:
[Call] Library.Module.Macro(), wobei Call optional ist.
Zum Beispiel, um das Makro Autotext von der Bibliothek Gimmicks aufzurufen, verwenden Sie den folgenden Befehl:
Gimmicks.AutoText.Main()


├ťbergeben von Variablen als Wert oder Referenz

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.

Optionale Parameter festlegen

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

Positions- oder Schl├╝sselwort-Argumente

Wenn Sie eine Funktion oder eine Unterroutine aufrufen, k├Ânnen Sie ihre Argumente nach Position oder nach Namen ├╝bergeben. Die ├ťbergabe nach Position bedeutet, dass nur die Argumente in der Reihenfolge aufgelistet werden, in der die Parameter in der Funktion oder Unterroutine festgelegt sind. Die ├ťbergabe des Namens erfordert, dass Sie dem Argument den Namen des entsprechenden Parameters voranstellen, gefolgt von einem Doppelpunkt und einem Gleichheitszeichen (:=). Schl├╝sselwort-Argumente k├Ânnen in beliebiger Reihenfolge angezeigt werden. Beispiele finden Sie in der Basic-Funktion Replace().

Wenn Sie weniger Parameter ├╝bergeben m├╝ssen, verwenden Sie Schl├╝sselwort-Argumente. Das ├ťbergeben von Werten f├╝r weniger Parameter nach Position erfordert, dass Werte f├╝r alle Parameter vor ihnen angegeben werden, ob optional oder nicht. Dadurch wird sichergestellt, dass sich die Werte an den richtigen Positionen befinden. Wenn Sie die Parameter nach Namen ├╝bergeben ÔÇô mit Schl├╝sselwort-Argumenten ÔÇô k├Ânnen Sie alle anderen Zwischenargumente weglassen.

G├╝ltigkeitsbereich von Variablen

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.

Deklarieren von Variablen au├čerhalb von Sub, Function oder Property


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.

Beispiele f├╝r private Variablen

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

Den Inhalt einer Variablen nach dem Beenden eines Sub, einer Funktion oder einer Eigenschaft speichern


  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.

Den Typ eines R├╝ckgabewerts einer Funktion oder einer Eigenschaft festlegen

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

Bitte unterst├╝tzen Sie uns!