Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola, Alguién sabe cómo convertir una variable String a Integer?. Estoy utilizando CInt() y me devuelve un error de "Type mismatch".
El caso es que CInt() está reflejado en la referencia de lenguaje para Basicx-24 pero me devuelve que está mal escrito al compilar. Si lo hago al revés, si convierto un valor Integer a String con CStr() si que lo pilla.
¿Sabe alguien la solución a esto?¿De qué otro modo puedo hacerlo?
Os paso el ejemplito que he hecho y que no me funciona.
' Basicx-24 (Editor del Basicx downloader V2.1)
Option Explicit
Public Sub Main()
Dim VarStr As String
Dim VarInt As Integer
VarStr = "12345678"
VarInt = CInt(Pulso(1))
End Sub
Saludos y gracias de antemano.
mediopixel, lo que tienes que hacer es coger uno por uno los caracteres del string y pasarlos a la variable int. Lo hago en C pq en Basic lo llevo muy olvidado:
string varStr = "12345678";
int varInt = 0;
for (int i = 0 ; i<len(varStr); i++)
varInt = varInt*10 + (varStr(i) - '0');
a ver, lo he hecho un poco "en plan guarro" pero os lo explico.
En C un string es un vector de chars (caracteres) terminados en un '/0' (caracter NULL), lo que hago es coger cada uno de los caracteres e irlos añadiendo, el *10 hace que se pase al siguiente digito y el -'0' convierte el valor ASCII del caracter en el número correspondiente.
S2
Ranganok Schahzaman
PD: No se si esta demasiado bien explicado, pero si queda alguna duda preguntar.
suponiendo que CInt() realice la funcion que dices, estas seguro de que en Pulso(1) tienes un valor literal? porque el error es lo que te dice que no concuerdan los tipos, no que no comprenda la sentencia.
hombre... tas intentando meter en un integer que se supone que es de 8bits (no tengo ni idea de que va ese compilador ni pa que micro es.. pero aunque fuese de 16bits tampoco llegaba..) un numero decimal que rebosa con creces a 255... "12.345.678" namenos...
mmm, es posible ioni, pero eso no le daria en error de desbordamiento o numero demasiado grane? out of range (o algo asi)