Contido
Índice 🔎︎

# Uso de procedementos e funcións

Esta parte describe o uso básico de procedementos e funcións en LibreOffice Basic.

Cando crea un novo módulo, LibreOffice Basic insire automaticamente un método chamado «Main». Este nome predefinido non ten nada que ver coa orde nin co punto de inicio dun proxecto de LibreOffice Basic. Pódea renomearsen problema.

Aplícanse algunhas restricións nos nomes das variábeis públicas, subs e funcións. Non se pode usar o mesmo nome dun dos módulos da mesma biblioteca.

Os procedementos (SUBS) e as funcións (FUNCTIONS) axúdano a manter unha visión xeral estruturada separando un programa en partes lóxicas.

Unha vantaxe dos procedementos e funcións é que, unha vez desenvolvido un código de programa que contén compoñentes de tarefas, pode usar este código noutro proxecto.

## Paso de variábeis a procedementos (SUB) e funcións (FUNCTION)

As variábeis pásanse tanto a procedementos como a funcións. É necesario declarar un método (SUB) ou función (FUNCTION) para contar cos parámetros:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Código de programa
    End Sub

Para chamar a un método (SUB) utilice a seguinte sintaxe:

    SubName(Value1, Value2,...)

Os parámetros que se pasan a un método (SUB) deben coincidir cos especificados na declaración SUB.

O mesmo proceso se aplica ás FUNCTIONS, para devolver un resultado de función, que se define atribuíndo o nome da función ao valor devolto (vexa o exemplo).

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Código do programa
    NomeFunción=Resultado
    End Function

Utilice a seguinte sintaxe para chamar a FUNCTION,:

    Variábel=NomeFunción(Parámetro1, Parámetro2,...)

You can also use the fully qualified name to call a procedure or function:
Library.Module.Macro()
For example, to call the Autotext macro from the Gimmicks library, use the following command:
Gimmicks.AutoText.Main()

## Paso de variábeis por valor ou referencia

Os parámetros pásanse a un método (SUB) ou función (FUNCTION) por referencia ou por valor. A menos que se especifique doutra forma, o parámetro pásase sempre por referencia, o que significa que un método (SUB) ou función (FUNCTION) obtén o parámetro e que pode ler e modificar o seu valor.

Para pasar un parámetro por valor, cando chame un método ou función, por exemplo, insira a palabra chave «ByVal» diante do parámetro:

    Result = Function(ByVal Parameter)

Neste caso, FUNCTION non modifica o contido orixinal do parámetro xa que só obtén o valor, e non o parámetro propiamente dito.

## Ámbito das variábeis

A variable defined within a SUB or FUNCTION, only remains valid until the procedure is exited. This is known as a "local" variable. In many cases, you need a variable to be valid in all procedures, in every module of all libraries, or after a SUB or FUNCTION is exited.

### Declaración de variábeis fóra dun método ou función

    DIM NomeVar As NOMETIPO

A variábel é válida mentres dura a sesión de LibreOffice.

    DIM NomeVar As NOMETIPO

A variábel é válida en todos os módulos.

    DIM NomeVar As NOMETIPO

A variábel é válida só en este módulo.

    Dim NomeVar As NOMETIPO

A variábel é válida só en este módulo.

### Exemplo de variábeis privadas

Enforce private variables to be private across modules by setting CompatibilityMode(true).

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        myText = "Ola"
        Print "No módulo1 : ", myText
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        ' Devolve agora unha cadea baleira
        ' (or raises error for Option Explicit)
        Print "Agora no módulo2 : ", myText
    End Sub

### Gardar o contido de variábeis tras saír dun método ou función

    DIM NomeVar As NOMETIPO

A variábel conserva o seu valor ata a seguinte vez que se entre na función ou método. A declaración debe existir dentro dun método ou función.

## Especificación do tipo de valor de retorno dunha FUNCTION

Para definir o tipo do valor de retorno da función, ao igual que coas variábeis, inclúa un carácter de declaración de tipo despois do nome da función, ou o tipo indicado por «As» e a palabra chave correspondente no final da lista de parámetros, por exemplo:

    Function WordCount(WordText As String) As Integer