Contingut

# Ús de procediments, funcions i propietats

A continuació es descriu l'ús bàsic dels procediments, les funcions i les propietats del LibreOffice BASIC.

Quan creeu un nou mòdul Basic de LibreOffice s'insereix automàticament una Sub anomenada"Principal". Aquest nom predeterminat no té res a veure amb l'ordre o el punt d'entrada d'un projecte del Basic de LibreOffice. També podeu canviar el nom de la rutina Sub de manera segura.

S’apliquen algunes restriccions als noms de les vostres variables públiques, subrutines, funcions i propietats. No heu d’utilitzar el mateix nom que un dels mòduls de la mateixa biblioteca.

Procedures (Subroutines) functions (Function) and properties (Property) help you maintaining a structured overview by separating a program into logical pieces. These pieces can be easily reused to perform similar tasks in other projects.

## Pas de variables a procediments, funcions o propietats

Les variables es poden passar a procediments, funcions o propietats. La Sub Funció o Propietat s'ha de declarar per esperar paràmetres:

      Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
          ' el vostre codi va aquí
      End Sub

La Sub es crida mitjançant la sintaxi següent:

      [Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Els paràmetres que es passen a una Sub s'han d'ajustar als especificats a la declaració Sub.

The same process applies to a Function. In addition, functions always return a result. This result is defined by assigning the value to return to the function name:

      Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
          ' el vostre codi va aquí
          FunctionName=Result
      End Function

La Function es crida mitjançant la sintaxi següent:

      Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Les propietats combinen la sintaxi de procediments i funcions. Una Propietat normalment requereix fins a un paràmetre.

      Private _IsApproved As TYPENAME
      Property Get IsApproved As TYPENAME
          ' el vostre codi va aquí
          IsApproved = some_computation
      End Property
      Property Let IsApproved(value As TYPENAME)
          ' el vostre codi va aquí
          _IsApproved = computed_value
      End Property

La Property es crida mitjançant la sintaxi següent:

      var = IsApproved
      IsApproved = some_value

També podeu utilitzar el nom complet per a cridar un procediment, funció o propietat:
[Call] Library.Module.Macro(), on Call és opcional.
Per exemple, per a cridar la macro Autotext des de la biblioteca Gimmicks, utilitzeu l'ordre següent:
Gimmicks.AutoText.Main()

## Pas de variables per valor o referència

Els paràmetres es poden passar a un procediment una funció o una propietat ja sigui per referència o per valor. A menys que s'indiqui el contrari un paràmetre sempre es passa per referència. Això vol dir que una Sub, una function o una Property obté el paràmetre i pot llegir i modificar el seu valor.

Si voleu passar un paràmetre per valor inseriu la paraula clau ByVal davant del paràmetre quan crideu un Sub, una Function o una Property per exemple

      Function ReadOnlyParms(ByVal p2, ByVal p2)
          ' el vostre codi va aquí
      End Function
      result = ReadOnlyParms(parm1, parm2)

En aquest cas la Function no modificarà el contingut original del paràmetre ja que només obté el valor i no el paràmetre en si.

## Definició de paràmetres opcionals

Les funcions, procediments o propietats es poden definir amb paràmetres opcionals, per exemple:

      Sub Rounding(number, Optional decimals, Optional format)
          ' el vostre codi va aquí
      End Sub

## Arguments per posició o paraula clau

Quan crideu una funció o una subrutina, podeu passar els seus arguments per posició o per nom. Passar per posició significa només enumerar els arguments en l'ordre en què es defineixen els paràmetres a la funció o subrutina. Passar pel nom requereix que prefixeu l'argument amb el nom del paràmetre corresponent seguit de dos punts i d'un signe igual (:=). Els arguments de paraula clau poden aparèixer en qualsevol ordre. Consulteu la funció Basic Replace() per a aquests exemples.

Quan necessiteu passar menys paràmetres, utilitzeu arguments de paraula clau. Passar valors per a menys paràmetres per posició requereix proporcionar valors per a tots els paràmetres anteriors, opcionals o no. Això garanteix que els valors estiguin en les posicions correctes. Si passeu els paràmetres pel nom, utilitzant arguments de paraula clau, podeu ometre tots els altres arguments intermedis.

## Àmbit de variables

Una variable definida dins d'una Sub una Function o una Property només roman vàlida fins que es surt del procediment. Això es coneix com una variable "local". En molts casos, necessitareu una variable que sigui vàlida en tots els procediments, en cada mòdul de totes les llibreries o, després d'una de sortir d'una Sub Function o una Property.

### Declaració de variables fora d'un Sub una funció o una propietat

    Global VarName As TYPENAME

La variable és vàlida mentre duri la sessió del LibreOffice.

    Public VarName As TYPENAME

La variable és vàlida a tots els mòduls.

    Private VarName As TYPENAME

La variable només és vàlida en aquest mòdul.

    Dim VarName As TYPENAME

La variable només és vàlida en aquest mòdul.

### Exemple de variables privades

Forceu que les variables privades siguin privades entre mòduls establint CompatibilityMode(True).

      ' ***** Module1 *****
      Private myText As String
      Sub initMyText
          myText = "Hola"
          Print "al mòdul1 : ", myText
      End Sub

      ' ***** Module2 *****
      'Option Explicit
      Sub demoBug
          CompatibilityMode( True )
          initMyText
          ' Torna una cadena buida
          ' (o genera un error per a Option Explicit)
          Print "Ara al mòdul2 : ", myText
      End Sub

### Com desar el contingut d'una variable després de sortir d'una Sub, una Function o una Property

      Static VarName As TYPENAME

La variable conserva el seu valor fins a la propera vegada que s'entra a una Function, Sub o Property. La declaració ha d'existir dins d'una Sub, Function o Property.

## Especifiqueu el tipus de valor de retorn d'una Function o una Property

Igual que amb les variables, incloure un caràcter de declaració de tipus després del nom de la funció, o el tipus indicat per As i el tipus de dades corresponent al final de la llista de paràmetres per definir el tipus de valor de retorn de la funció o propietat, per exemple

      Function WordCount(WordText As String) As Integer

Temes relacionats

COMpatibilityMode() Funció

Opció Explícita expressió

paraula clau opcional

Expressió Property

Expressió Static

Ens cal la vostra ajuda!