Tartalom
Index 🔎︎

# Eljárások és függvények használata

A következő szakasz az eljárások és a függvények alapvető használatát írja le a LibreOffice Basicben.

Új modul létrehozásakor a LibreOffice Basic automatikusan beszúrja a „Main” nevű szubrutint. Ez az alapértelmezett név semmit sem csinál a LibreOffice Basic-projekt sorrendjével vagy kezdési pontjával. Ezt a szubrutint biztonságosan átnevezheti.

A változók, szubrutinok és függvények elnevezésére vannak korlátozások. Nem használhatja ugyanazt a nevet, mint az ugyanabban a függvénykönyvtárban levő másik modul.

Az eljárások és a függvények segítségével fenntarthatja program strukturális áttekinthetőségét logikai részekre bontással.

Az eljárások és a függvények használatának az az egyik előnye, hogy ha már kidolgozott egy programkódot valamilyen műveletre, azt később más projekteknél is használhatja.

## Változók átadása az eljárások és függvények számára

A változók átadhatók eljárásoknak és függvényeknek is. A szubrutint vagy függvényt deklarálni kell a paraméterek fogadásához:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Programkód
    End Sub

A szubrutint az alábbi szintaxissal lehet meghívni:

    SubName(Value1, Value2,...)

A szubrutinnak átadott paramétereknek meg kell felelniük a szubrutin deklarációjánál megadottaknak.

Ugyanez érvényes a függvényekre is. A függvények mindig egy függvényeredményt adnak vissza. A függvény eredménye a visszatérési érték függvénynévhez rendelésével van megadva:

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Programkód
    Függvénynév=Eredmény
    End Function

A függvényt az alábbi szintaxissal hívhatja meg:

    Változó=Függvénynév(Paraméter1, Paraméter2,...)

Eljárás vagy függvény meghívásához használhatja a teljes nevet is:
Programkönyvtár.Modul.Makró()
Ha például az Autotext makrót akarja meghívni a Gimmicks programkönyvtárból, használja a következő parancsot:
Gimmicks.AutoText.Main()

## Változók átadása értékként vagy hivatkozásként

A szubrutinnak vagy függvénynek a paraméterek hivatkozásként vagy értékként adhatók át. Hacsak nincs másképp megadva, akkor a paraméter mindig hivatkozásként kerül átadásra. Ez azt jelenti, hogy a szubrutin vagy függvény megkapja a paramétert, és az értéke olvasható vagy módosítható.

Ha a paramétert értékként kívánja átadni, akkor az eljárás vagy függvény meghívásakor szúrja be a „ByVal” kulcsszót a paraméter elé, például:

    Eredmény = Függvény(ByVal Paraméter)

Ebben az esetben a paraméter eredeti tartalma nem változik, hisz a függvény csak a paraméter értékét kapja meg, nem magát a paramétert.

## Változók hatóköre

Az eljáráson vagy függvényen belül megadott változó csak addig marad érvényes, amíg az eljárásból ki nem lép. Ez „lokális” változóként ismert. Számos esetben minden eljárásban, az összes könyvtár minden moduljában vagy az eljárásból vagy függvényből kilépés után is érvényes változóra van szükség.

### Változók deklarálása a szubrutinon vagy a függvényen kívül

    Global Változónév As TÍPUSNÉV

A változó addig érvényes, amíg a LibreOffice-munkamenet tart.

    Public Változónév As TÍPUSNÉV

A változó minden modulban érvényes.

    Private Változónév As TÍPUSNÉV

A változó csak ebben a modulban érvényes.

    Dim Változónév As TÍPUSNÉV

A változó csak ebben a modulban érvényes.

### Példa privát változókra

Kényszerítse ki a privát változók modulokon keresztüli privát voltát a CompatibilityMode(true) beállítással.

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        myText = "Hello"
        Print "1. modulban: ", myText
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        ' Üres karakterláncot ad vissza
        ' (or raises error for Option Explicit)
        Print "2. modulban: ", myText
    End Sub

### Változó tartalmának mentése a szubrutin vagy függvény bezárása után

    Static Változónév As TÍPUSNÉV

A változó megtartja az értékét addig, amíg a program be nem lép a következő szubrutinba vagy függvénybe. A deklarációnak a szubrutinon vagy függvényen belül kell léteznie.

## Egy függvény visszaadandó értékének megadása

A változókhoz hasonlóan a típusdeklarációs karaktert a függvény neve vagy az „As” kulcsszóval jelzett típus után kell megadni, a megfelelő kulcsszót pedig a paraméterlista végén, a függvény visszatérési értékének megadásához, például:

    Function WordCount(WordText As String) As Integer