sábado, 11 de mayo de 2024

Funciones. Conversión de datos.

Funciones de conversión

Muchas veces necesitamos transformar una variable de un tipo determinado a otro tipo diferentes. OOo Basic no es un lenguaje fuertemente tipado, por lo que este tipo de transformación puede realizarla de forma automática sin que nos demos cuenta, pero es importante conocer cómo realizar estos cambios, ya que no siempre ese automatismo funciona o nos interesa. Para ello contamos con las funciones de conversión.



Si empleamos Option Explicit al inicio de un módulo hacemos que OOo Basic pierda la flexibilidad que tiene a la hora de transformar implícitamente las variables de un tipo a otro, obligándonos a usar las funciones de conversión, pero no hace falta llegar a esos extremos para darnos cuenta del interés que tiene conocer estas funciones. Además su uso es tan sencillo que no representa mayor problema y nos facilita escribir un código inteligible y coherente.

Como su nombre indica, una función de conversión es aquella que nos permite transformar una variable (por ejemplo) String Integer en otra (por ejemplo) Integer. Por ejemplo, si usamos InputBox() como interface para solicitar un dato numérico, por definición, InputBox() nos devuelve un dato aparentemente numérico pero en realidad de tipo String (no tiene otra opción), de modo que si queremos trabajar con ese dato como numérico para asignarlo a un variable que definimos como tal, es cuanto menos conveniente utilizar la función de conversión que corresponda para realizar dicha transformación.

Dim iEdad As Integer

        iEdad = CInt(InputBox("¿Cuántos años tienes?"))) 

Si no realizamos la conversión del resultado del uso de InputBox(), el dato resultante será una cadena alfanumérica, pero no un valor numérico. De no mediar la flexibilidad tipológica de OOo Basic, obtendríamos una respuesta de error o lo que es peor: al intentar operar con dicho valor nos provocaría un fallo en el script.

Otra situación interesante (y frecuente) es cuando solicitamos la introducción de un dato de tipo fecha y lo hacemos sobre una interface que devuelve datos tipo alfanumérico (otra vez InputBox(), pero no sólo). Si usamos la función de conversión (CDate()) convertimos el valor devuelto en una fecha y podemos operar con ella como tal con las funciones disponibles o las que creemos nosotros mismos.

Podemos apreciar, por lo dicho, que las funcione de conversión nos permiten, además, utilizar formas de trabajar con los datos y con el proceso Input de forma mucho más flexible de lo que podríamos hacerlo sin contar con ellas. Esta es una segunda utilidad muy interesante.

Veamos cuáles son las funciones de conversión:

La Wiki de OpenOffice nos ofrece una tabla resumen muy útil en cuya columna FC se recogen las funciones de conversión disponibles en OOo Basic. Se debe entender que cada una de estas funciones convierte un dato al tipo que se expresa en ellas (CDate -> convierte el dato al tipo Fecha). Su uso es así de simple (el resto de las funciones usa la misma lógica y sintaxis):

vFechaNacimiento = CDate(sFechaNac)

Como muestra la tabla precedente, todos los tipos de variables cuentan con su función de conversión, a excepción del tipo Object que carece de función de conversión.

Otra restricción (ésta fácilmente comprensible) es que su aparente simplicidad no supone que podamos convertir cualquier dato en otro, ya que el tipo deseado y el dato presentado deben ser compatibles. Por ejemplo, la cadena alfanumérica (un String"Casa" no se puede convertir a Integer por mucho que apliquemos la función de conversión CInt(), pero la cadena alfanumérica "123" sí.

No hay comentarios:

Publicar un comentario

Comenta esta entrada