Usare procedure e funzioni
Questa sezione descrive gli usi principali delle procedure e delle funzioni in LibreOffice Basic.
Quando create un nuovo modulo, LibreOffice Basic inserisce automaticamente una SUB (subroutine) di nome "Main". Questo nome predefinito non influisce in alcun modo sull'ordine o sul punto di partenza dei progetti di LibreOffice Basic. Potete anche rinominare senza problemi questa SUB.
Ai nomi delle variabili, subroutine e funzioni pubbliche si applicano alcune restrizioni. Non dovete usare lo stesso nome utilizzato come nome di uno dei moduli della stessa libreria.
Le procedure (SUB) e le funzioni (FUNCTION) vi aiutano a mantenere una visione strutturata del programma, separandolo in parti logiche.
Uno dei vantaggi delle procedure e delle funzioni è che, una volta sviluppato un codice di programma con componenti per un dato compito, potete usare lo stesso codice per altri progetti.
Passare variabili alle procedure (SUB) e alle funzioni (FUNCTION)
Le variabili possono essere passate sia alle procedure, sia alle funzioni. La dichiarazione della subroutine o della funzione deve specificare i parametri ammessi:
Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Codice del programma
End Sub
La SUB (subroutine) viene chiamata con la sintassi seguente:
SubName(Value1, Value2,...)
I parametri passati a una subroutine devono corrispondere a quelli specificati nella relativa dichiarazione.
Lo stesso procedimento può essere applicato alle FUNCTION (funzioni) per restituire il risultato di una funzione. Tale risultato può essere definito direttamente prima di raggiungere la fine della funzione, assegnando il nome della funzione e un parametro al valore che dovrà essere restituito dalla funzione:
Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Codice del programma
NomeFunzione=Risultato
End Function
La FUNCTION (funzione) viene chiamata con la sintassi seguente:
Variabile=NomeFunzione(Parametro1, Parametro2,...)
Potete usare anche un nome qualificato per richiamare una procedura o funzione:
Libreria.Modulo.Macro()
Ad esempio, richiamate la macro per il testo automatico dalla libreria Gimmicks col seguente comando:
Gimmicks. AutoText.Main()
Passare le variabili per valore o riferimento
I parametri possono essere passati alla SUB (subroutine) o alla FUNCTION (funzione) attraverso un riferimento oppure usando un valore. Se non specificato diversamente, i parametri vengono sempre passati mediante un riferimento. Ciò significa che la SUB o la FUNCTION ricevono il parametro e possono leggerne o modificarne il valore.
Se volete passare un parametro per valore, inserite la parola chiave "ByVal" davanti al parametro quando chiamate la SUB o la FUNCTION, ad esempio:
Risultato = Function(parametro ByVal)
In questo caso, il contenuto originale del parametro non verrà modificato dalla FUNCTION, poiché questa riceverà solo il valore e non il parametro vero e proprio.
Ambito delle variabili
Una variabile definita solo entro un blocco SUB o FUNCTION rimane valida solo finché la procedura è in corso. Questa variabile si chiama variabile "locale". In molti casi, vi potrebbe servire una variabile che sia valida in tutte le procedure, in ciascun modulo di tutte le librerie o dopo che una SUB o FUNCTION è terminata.
Dichiarare variabili al di fuori di una SUB o una FUNCTION
Global NomeVar As TIPO
La variabile è valida per la durata della sessione di LibreOffice.
Public NomeVar As TIPO
La variabile è valida in tutti i moduli.
Private NomeVar As TIPO
La variabile è valida solo nel modulo attivo.
Dim NomeVar As TIPO
La variabile è valida solo nel modulo attivo.
Esempio per variabili private
Forza le variabili private a rimanere tali in altri moduli impostando CompatibilityMode(true).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Ciao"
Stampa "In modulo1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Ora restituisce una stringa vuota
' (o eleva errore per Option Explicit)
Stampa "Ora in modulo2 : ", myText
End Sub
Salvare il contenuto di una variabile dopo l'uscita da una SUB o da una FUNCTION
Static NomeVar As TIPO
La variabile mantiene il proprio valore finché non ha inizio la FUNCTION o la SUB successiva. La dichiarazione deve essere all'interno di una SUB o di una FUNCTION.
Specificare il tipo di valore di ritorno di una FUNCTION
Come per le variabili, per definire il tipo di valore di ritorno della funzione inserite un carattere di dichiarazione del tipo dopo il nome della funzione, oppure il tipo indicato da "As" e dalla parola chiave corrispondente, alla fine dell'elenco dei parametri, ad esempio:
Function WordCount(WordText As String) As Integer