Uso de procedimientos, funciones y propiedades

A continuación se describe el uso básico de los procedimientos, las funciones y las propiedades de LibreOffice BASIC.

Icono de nota

Cuando crea un módulo nuevo, LibreOffice BASIC inserta automáticamente una Sub llamada «Main». Este nombre predeterminado no tiene nada que ver con el orden o el punto de arranque de un proyecto de LibreOffice BASIC. Además, es seguro cambiar el nombre de esta Subrutina.


Icono de nota

Se aplican algunas restricciones a los nombres de sus variables públicas, subrutinas, funciones y propiedades. No debe emplear el mismo nombre que otro de los módulos de la misma biblioteca.


Los procedimientos (Subrutinas), funciones (Function) y propiedades (Property) le ayudan a mantener una descripción general estructurada al separar un programa en partes lógicas. Estas piezas se pueden reutilizar fácilmente para realizar tareas similares en otros proyectos.

Pasar variables a procedimientos, funciones o propiedades

Se pueden pasar variables tanto a procedimientos como a funciones o propiedades. Se debe declarar qué parámetros espera la Sub, Function o Property:


  Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
      ' su código va aquí
  End Sub

Se llama a la Sub mediante la sintaxis siguiente:


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

Los parámetros pasados a una Sub deben ajustarse a los especificados en la declaración de la Sub.

El mismo proceso se aplica a una Function. Además, las funciones siempre devuelven un resultado. Este resultado se define asignando el valor que devuelve al nombre de la función:


  Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
      ' su código va aquí
      FunctionName=Result
  End Function

Se llama a la Function mediante la sintaxis siguiente:


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

Las propiedades combinan la sintaxis de procedimientos y funciones. Una Property normalmente requiere al menos un parámetro.


  Private _IsApproved As TYPENAME
  Property Get IsApproved As TYPENAME
      ' su código va aquí
      IsApproved = some_computation
  End Property
  Property Let IsApproved(value As TYPENAME)
      ' su código va aquí
      _IsApproved = computed_value
  End Property

Se llama a la Property mediante la sintaxis siguiente:


  var = IsApproved
  IsApproved = some_value
Icono de consejo

También puede utilizar el nombre completo para llamar a un procedimiento, función o propiedad:
[Call] Library.Module.Macro(), donde Call es facultativo.
Por ejemplo, para llamar a la macro Autotext desde la biblioteca Gimmicks, use la orden siguiente:
Gimmicks.AutoText.Main()


Pasar variables por valor o por referencia

Los parámetros se pueden pasar a un procedimiento, una función o una propiedad ya sea por referencia o por valor. A menos que se especifique lo contrario, un parámetro siempre se pasa por referencia. Eso significa que una Sub, una Function o una Property obtienen el parámetro y pueden leer y modificar su valor.

Si desea pasar un parámetro por valor, inserte la palabra clave ByVal delante del parámetro cuando llame a una Sub, una Function o una Property, por ejemplo:


  Function ReadOnlyParms(ByVal p2, ByVal p2)
      ' su código va aquí
  End Function
  result = ReadOnlyParms(parm1, parm2)

En este caso, la Función no modificará el contenido original del parámetro ya que solo obtiene el valor y no el parámetro en sí.

Definir parámetros opcionales

Es posible definir funciones, procedimientos o propiedades con parámetros opcionales; por ejemplo:


  Sub Rounding(number, Optional decimals, Optional format)
      ' su código va aquí
  End Sub

Argumentos posicionales o de palabra clave

Al llamar a una función o subrutina, puede pasar sus argumentos por posición o por nombre. El paso por posición consiste simplemente en enumerar los argumentos en el orden en que están definidos los parámetros en la función o subrutina. El paso por nombre requiere anteponer al argumento el nombre del parámetro correspondiente, seguido de dos puntos y un signo de igualdad (:=). Los argumentos de palabra clave pueden aparecer en cualquier orden. Consulte la función Replace() de BASIC para ver ejemplos de este tipo.

Cuando necesite pasar menos parámetros, utilice argumentos de palabras clave. Pasar valores para menos parámetros por posición requiere proporcionar valores para todos los parámetros anteriores a ellos, opcionales o no. Esto asegura que los valores estén en las posiciones correctas. Si pasa los parámetros por nombre (usando argumentos de palabras clave) puede omitir los demás argumentos intermedios.

Ámbito de variables

Una variable definida dentro de una Sub, una Function o una Property, solo permanece válida hasta que se sale del procedimiento. Esto se conoce como variable "local". En muchos casos, necesita que una variable sea válida en todos los procedimientos, en cada módulo de todas las bibliotecas o después de salir de una Sub, una Function o una Property.

Declarar variables fuera de una Sub una Function o una Property


Global VarName As TYPENAME

La variable es válida mientras dure la sesión de LibreOffice.


Public VarName As TYPENAME

La variable es válida en todos los módulos.


Private VarName As TYPENAME

La variable solo es válida en este módulo.


Dim VarName As TYPENAME

La variable solo es válida en este módulo.

Ejemplo para variables privadas

Fuerce que las variables privadas lo sean en todos los módulos estableciendo CompatibilityMode(True).


  ' ***** Module1 *****
  Private myText As String
  Sub initMyText
      miTexto = "Hola"
      Print "En módulo1 : ", miTexto
  End Sub
   
  ' ***** Module2 *****
  'Option Explicit
  Sub demoBug
      CompatibilityMode( True )
      initMyText
      ' Ahora devuelve una cadena vacía
      ' (o produce un error con Option Explicit)
      Print "Ahora en módulo2 : ", miTexto
  End Sub

Guardar el contenido de una variable luego de salir de una Sub, una Function o una Property


  Static VarName As TYPENAME

La variable conserva su valor hasta la próxima vez que se utiliza en una Function, Sub o una Property. La declaración debe existir dentro de una Sub, una Function o una Property.

Especificar el tipo de valor de retorno de una Function o una Property

Al igual que con las variables, incluya un carácter de declaración de tipo después del nombre de la función, o el tipo indicado por As y el tipo de datos correspondiente al final de la lista de parámetros para definir el tipo de valor de retorno de la función o propiedad, por ejemplo:


  Function WordCount(WordText As String) As Integer
¡Necesitamos su ayuda!

¡Necesitamos su ayuda!