Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ELGRANSOLRAC en 8 Junio 2006, 23:33 pm



Título: Ayuda Desbordamiento
Publicado por: ELGRANSOLRAC en 8 Junio 2006, 23:33 pm

Hola tengo este problema cuando intento pasar de Hex a Dec con una cadena larga me da error Desbordamiento en la variable valor

Código:

 'Declaración de variables locales
    Dim cadena As String 'Almacena el valor del campo
    Dim indice As Integer 'Lo usaremos para recorrer la cadena
    Dim longitud As Integer 'Registra la longitud de la cadena
    Dim caracter As String 'Almacena la letra actual
    Dim valor As Long
    Dim exponente As Integer
   
   

Private Sub Command1_Click()
cadena = Text1.Text
    longitud = Len(cadena)
    valor = 0
    exponente = longitud - 1
   
    For indice = 1 To longitud
    'Vamos a recorrer la cadena e ir transformando cada caracter
        caracter = Mid(cadena, indice, 1)
        'Ya tenemos el caracter, ahora lo que tenemos que hacer es transformarlo
        'y calcular su valor según su posición

        Select Case caracter
            Case "a"
                valor = valor + (10 * (16 ^ exponente))
            Case "A"
                valor = valor + (10 * (16 ^ exponente))
            Case "b"
                valor = valor + (11 * (16 ^ exponente))
            Case "B"
                valor = valor + (11 * (16 ^ exponente))
            Case "c"
                valor = valor + (12 * (16 ^ exponente))
            Case "C"
                valor = valor + (11 * (16 ^ exponente))
            Case "D"
                valor = valor + (11 * (16 ^ exponente))
            Case "d"
                valor = valor + (13 * (16 ^ exponente))
            Case "e"
                valor = valor + (14 * (16 ^ exponente))
            Case "E"
                valor = valor + (11 * (16 ^ exponente))
            Case "f"
                valor = valor + (15 * (16 ^ exponente))
            Case "F"
                valor = valor + (11 * (16 ^ exponente))
        Case Else
        'Código en caso de que no sea letra
           

                valor = valor + Int(caracter) * (16 ^ exponente)


        End Select
       
    exponente = exponente - 1
   
    Next indice 'fin del for indice=1
    Text1.Text = valor
End Sub


Gracias a quien pueda ayudarme