En muchos programas necesitaremos convertir un tipo de dato a otro tipo.
Gambas nos proporciona una serie de funciones que realizan distintos tipos de conversión:
Mas información: http://gambasdoc.org/help/cat/conv?en&v3 y http://gambasdoc.org/help/cat/conv?es&v3
Un ejemplo:
Este programa recibe una cadena, lo convierte en un numero, y le suma 23, mostrando el resultado:
-->
Gambas nos proporciona una serie de funciones que realizan distintos tipos de conversión:
Funciones de Conversión
CBool | Convierte un valor en Boolean. |
CByte | Convierte un valor en Byte. |
CDate | Convierte un valor en Date. |
CFloat | Convierte un valor en Float. |
CInt | Convierte un valor en Integer. |
CLong | Convierte un valor en Long. |
Conv$ | Convierte una cadena de un juego de caracteres a otro. |
CShort | Convierte un valor en Short. |
CSng | Convierte un valor en Single. |
CStr | Convierte un valor en String. |
CVariant |
Convierte un valor en Variant.
Sólo en versión 3.0
|
DConv$ | Convierte una cadena del juego de caracteres del sistema a UTF-8 (juego de caracteres de la interfaz gráfica). |
SConv$ | Convierte una cadena desde el juego de caracteres UTF-8 (el empleado en la interfaz gráfica) al juego de caracteres del sistema. |
Str$ | Convierte un número o fecha en una cadena. |
Val | Convierte una cadena en un número o fecha. |
Mas información: http://gambasdoc.org/help/cat/conv?en&v3 y http://gambasdoc.org/help/cat/conv?es&v3
Un ejemplo:
Este programa recibe una cadena, lo convierte en un numero, y le suma 23, mostrando el resultado:
Dim
cadena As
String
Dim
numero As
Float
Print
"Ejemplo
de conversion de tipos:"
Print
"Convertir
una cadena en un numero"
Input
cadena
Print
"Esto
seria cadena:",
cadena
numero
=
Val(cadena) 'aqui hago uso de la función de conversión
Print
"Esto
seria como un numero: ",
numero
numero
+=
23
'le
sumo al numero 23 unidades
Print
"Y
puedo realizar operaciones con el numero:",
numero
Descarga del ejemplo completo: Enlace
Nota:
Añado aqui otro código, este hace uso de la orden Try (ver gestion de excepciones y errores )
Este código "comprueba" que el usuario ha escrito un número y no un texto (que origina un error del tipo "No coinciden los tipos: Requerido Float, obtenido Null en cambio"). En caso de que el usuario escriba un texto, el programa vuelve a pedir que se introduzca de nuevo un número, (para ello usa el bucle while wend)
'
Gambas module file
Public
Sub
Main()
Dim
cadena As
String
Dim
numero As
Float
Dim
Nosalir As
Float =
True
Print
"Ejemplo
de conversion de tipos:"
Print
"Convertir
una cadena en un numero"
While
Nosalir 'bucle que se repite hasta que se haya introducido un numero
Print
"introduce
numero:"
Input
cadena
Print
"Esto
seria cadena:", cadena
Try
numero =
Val(cadena)
'aqui hago
uso de la función de conversión y de la instrucción Try, que si se detecta que si se ha producido un error.
If
Error
Then
Print
"El
usuario no ha introducido un numero, vuelve a intentarlo"
Nosalir =
True
Else
NOsalir =
False 'esto hace que al evaluarse la condicion del bucle While, salgamos de este
Endif
Wend
Print
"Esto
seria como un numero: ", numero
numero +=
23
'le sumo
al numero 23 unidades
Print
"Y
puedo realizar operaciones con el numero:",
numero
End
Descarga del código de ejemplo: enlace
Y en el caso de variables de tipo Result que lo quiera convertir a entero?
ResponderEliminarLo haces con la funcion cint()
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarBuenas, muy bueno el curso
ResponderEliminarEstoy iniciando con el asunto de programar, así que voy a hacer preguntas quizás muy obvias o tontas..
Seguí el ejemplo tipeandolo y lo descargué, en ambos casos luego de escribir una palabra o letra obtengo un error en la linea 16 "No coinicen los tipos: Requerido Float, obtenido Null en cambio"
Cual sería el error? Estoy usando Gambas 3.4.1
Desde ya gracias por el trabajo realizado
Hola Maximiliano:
ResponderEliminarLo que esta ocurriendo es debido a que la funcion val() espera algo un número por ejemplo que escribas "23.45", pero si escribes "hola", no puede convertirlo en número, y lo que hace es devolver el valor Null y sales del programa "abruptamente"
Para evitar esto se usan las excepciones ( lo explico aqui: http://cursogambas.blogspot.com.es/2012/11/gestion-de-excepciones-y-errores.html). He añadido a este post, un otro ejemplo, para que veas como sería.
Te explico, en este caso sería algo asi como:
Try numero = Val(cadena)
if error then
print "El usuario no ha escrito un numero"
print "fin del programa" ' tambien puede volver pedir otra vez la introducción del numero, usando un ciclo while, por ejemplo
endif
Gracias Fernando, muy ilustrativo el ejemplo. De a poco voy entendiendo, pero seguro seguiré molestando con preguntas de este tipo. Saludos
ResponderEliminaridentificador desconocido: TextUsuario en Modcon.module:32
ResponderEliminarcomo puedo hacer para corregir este error no me reconoce TextUsuario el modulo