Uso de cookies

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continúa navegando, consideramos que acepta su uso. Para obtener más información o bien conocer cómo cambiar la configuración lea nuestra Política de cookies

Opciones y directivas del compilador

Al inicio de un módulo podemos fijar las siguientes opciones o directivas a nivel del compilador de OpenOffice Basic:

Opción Descripción
Def Especifica el tipo de las variables no declaradas en función de su nombre.
Option Base Define si el primer elemento de un array es el 0 o el 1, si no se especificó en su declaración.
Option Compatible Cambia el modo de funcionamiento de OOo Basic a uno más compatible con VBA.
Option Explicit Obliga a que se definan las variables. Si utilizamos una variable no declarada previamente, al iniciar la macro el compilador se detendrá mostrando un mensaje de error.



Option Compatible

Al incorporar esta opción del compilador al principio de un módulo, le indicas al compilador que modifique su modo de trabajo para ser más compatible con el dialecto VBA.


Puedes encontrar información de esta opción del compilador en este enlace de nuestro blog: Option Compatible en OOo Basic



Option Explicit

La declaración de variables no es obligatoria, pero es muy conveniente para evitar errores.


Para forzar a que se nos exija que se declaren las variables utilizadas, debemos agregar el comando de compilador  Option Explicit  al inicio de cada módulo.


REM  *****  BASIC  *****
Option Explicit
 
Sub MiFuncion() as string
 
 
End Sub


Si utilizamos una variable no declarada previamente, al iniciar la macro el compilador se detendrá mostrando un mensaje de error y resaltada en azul, la variable no declarada.


OpenOffice.Basic.Macros.013.png




Directiva Def

Podemos declarar por la letra con la que empieza el nombre de la variable los tipos de aquellas variables cuyo tipo no sea declarado explícitamente.


Para forzar esta declaración, debemos agregar uno o más comandos de compilador  Def  al inicio de cada módulo.


En el siguiente ejemplo se definirán como variables de tipo:


  • integer aquellas que empiecen por las letras i, j, k o n, utilizando DefInt
  • long las que empiecen por la letra l, utilizando DefLng
  • double las que empiecen por la letra d, utilizando DefDbl
  • single las que empiecen por la letra s, utilizando DefSng
  • currency las que empiecen por la letra m, utilizando DefCur
  • string las que empiecen por la letra c, utilizando DefStr
  • boolean las que empiecen por la letra b, utilizando DefBool
  • date las que empiecen por la letra f o h, utilizando DefDate
  • objeto las que empiecen por la letra o, utilizando DefObj
  • variable las que empiecen por la letra v, utilizando DefVar


REM  *****  BASIC  *****
Option Explicit
DefInt i-k, n
DefLng l
DefDbl d
DefSng s
DefCur m
 
DefStr c
 
DefBool b
DefDate f,h
 
DefObj o
DefVar v
 
Sub MiSubRutina() as string
 
 
End Sub


La directiva  Def  declara el tipo de la variable, pero no declara la variable, que tiene que ser declarada al nivel que corresponda.


Las variables tampoco se inicializan con su tipo de dato, por lo que antes de asignarles un valor, se presentan como vacías.


El siguiente código utiliza las funciones  TypeName  y  VarType  para ilustrar este hecho.


REM  *****  BASIC  *****
Option Explicit
DefInt i-k
DefLng n
DefDbl d
 
DefBool l
DefDate f,h
DefObj o
DefVar v
 
DefCur m
DefSng s
DefStr c
 
Dim cTexto
 
Sub MiSubRutina( optional nNumero )
Dim fFecha
 
MsgBox TypeName( cTexto ) & chr(13) & _
       TypeName( nNumero ) & chr(13) & _
       TypeName( fFecha ) 
 
MsgBox VarType( cTexto ) & chr(13) & _
       VarType( nNumero ) & chr(13) & _
       VarType( fFecha )  
 
cTexto = "Hola"
nNumero = 100
fFecha = date
 
MsgBox TypeName( cTexto ) & chr(13) & _
       TypeName( nNumero ) & chr(13) & _
       TypeName( fFecha ) 
 
MsgBox VarType( cTexto ) & chr(13) & _
       VarType( nNumero ) & chr(13) & _
       VarType( fFecha )               
 
End Sub
Modificada el 22 jun 2016 14:17.   Visitas: 4774