Korzystanie z procedur i funkcji

Poniżej opisano podstawowe zasady korzystania z procedur i funkcji w LibreOffice Basic.

Ikona notatki

Podczas tworzenia nowego modułu LibreOffice Basic automatycznie wstawia procedurę SUB o nazwie "Main". Ta domyślna nazwa nie ma związku z kolejnością lub punktem startowym projektu LibreOffice Basic. Istnieje także możliwość bezpiecznej zmiany tej procedury.


Ikona notatki

Nazwy zmiennych publicznych obłożone są pewnymi restrykcjami. Nie możesz użyć takiej samej nazwy jak nazwa jednego z modułów w tej samej bibliotece.


Procedury (SUB) i funkcje (FUNCTION) pomagają zachować strukturalny układ programu poprzez podzielenie go na logiczne fragmenty.

Kolejną zaletą korzystania z procedur i funkcji jest możliwość wykorzystywania w innym projekcie napisanego kodu programu zawierającego zadania składowe.

Przekazywanie zmiennych do procedur (SUB) i funkcji (FUNCTION)

Zmienne mogą być przekazywane zarówno do procedur, jak i funkcji. Instrukcje SUB i FUNCTION należy deklarować wraz z oczekiwanymi parametrami:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Kod programu
End Sub

Procedura SUB jest wywoływana z wykorzystaniem następującej składni:


SubName(Value1, Value2,...)

Parametry przekazane do procedury SUB muszą odpowiadać parametrom określonym podczas jej deklaracji.

Powyższe zasady obowiązują także w przypadku funkcji (FUNCTION). Dodatkowo funkcje zawsze zwracają wynik funkcji. Wynik funkcji jest definiowany przez przypisanie wartości zwracanej do nazwy funkcji:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Kod programu
NazwaFunkcji=Wynik
End Function

Funkcja FUNCTION jest wywoływana z wykorzystaniem następującej składni:


Zmienna=nazwa_funkcji(parametr1, parametr2,...)
Ikona wskazówki

Procedurę lub funkcję można także wywoływać z wykorzystaniem w pełni kwalifikowanej nazwy:
Library.Module.Macro()
. Na przykład w celu wywołania makra AutoTekst umieszczonego w bibliotece Dodatki należy użyć następującego polecenia:
Gimmicks.AutoText.Main()


Przekazywanie zmiennych przez wartość lub odwołanie

Parametry mogą być przekazywane do procedury SUB lub funkcji FUNCTION zarówno przez odwołanie, jak i przez wartość. O ile nie zostanie to inaczej określone, parametr jest zawsze przekazywany przez odwołanie. Procedura SUB lub funkcja FUNCTION pobiera zatem parametr i może odczytać oraz zmodyfikować jego wartość.

W celu przekazania parametru przez wartość podczas wywoływania procedury SUB lub funkcji FUNCTION należy poprzedzić go słowem kluczowym ByVal:


Wynik = funkcja(ByVal parametr)

W tym przypadku pierwotna wartość parametru nie zostanie zmodyfikowana przez funkcję FUNCTION, ponieważ nie pobiera ona parametru, a wyłącznie jego wartość.

Zakres zmiennych

Zmienna zdefiniowana w obrębie procedury SUB lub funkcji FUNCTION jest dostępna wyłącznie do momentu opuszczenia procedury. Taka zmienna jest nazywana zmienną lokalną. W wielu przypadkach wymagana jest dostępność zmiennej we wszystkich procedurach, w każdym module lub we wszystkich bibliotekach lub też po opuszczeniu procedury SUB lub funkcji FUNCTION.

Deklarowanie zmiennych poza procedurą SUB lub funkcją FUNCTION


Global nazwa_zmiennej As nazwa_typu

Zmienna jest dostępna podczas całej sesji LibreOffice.


Public nazwa_zmiennej As nazwa_typu

Zmienna jest dostępna we wszystkich modułach.


Private nazwa_zmiennej As nazwa_typu

Zmienna jest dostępna tylko w tym module.


Dim nazwa_zmiennej As nazwa_typu

Zmienna jest dostępna tylko w tym module.

Przykład dla zmiennych prywatnych

Wymuś zmienne prywatne, aby były prywatne w różnych modułach przez ustawienie CompatibilityMode(prawda).


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Witaj"
    Print "W module 1 : ", myText
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Teraz zwraca pusty ciąg
    ' (or raises error for Option Explicit)
    Print "Teraz w module 2 : ", myText
End Sub

Zachowanie wartości zmiennych po opuszczeniu procedury SUB lub funkcji FUNCTION


Static nazwa_zmiennej As nazwa_typu

Zmienna zachowuje wartość aż do następnego uruchomienia funkcji FUNCTION lub procedury SUB. Deklaracja musi istnieć wewnątrz procedury SUB lub funkcji FUNCTION.

Określenie typu zwracanej wartości funkcji

Podobnie jak w przypadku zmiennych, w celu zdefiniowania typu zwracanej wartości funkcji po jej nazwie należy podać znak deklaracji typu lub też na końcu listy parametrów dodać "As" i odpowiednie słowo kluczowe, na przykład:


Function WordCount(WordText As String) As Integer

Please support us!