Uso de procedementos e funcións

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

Icona Nota

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.


Icona Nota

Some restrictions apply for the names of your public variables, subs, and functions. You must not use the same name as one of the modules of the same library.


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,...)
Icona Suxestión

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

Axúdenos, por favor!