Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Paso de cadenas

Estas en el tema de Paso de cadenas en el foro de Visual Basic clásico en Foros del Web. Hola a todos, Soy un principiante en VB y estoy haciendo un código muy sencillo en Visual Basic 6.0 y me da un error que ...
  #1 (permalink)  
Antiguo 17/10/2008, 03:51
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 18 años, 9 meses
Puntos: 0
Paso de cadenas

Hola a todos,

Soy un principiante en VB y estoy haciendo un código muy sencillo en Visual Basic 6.0 y me da un error que seguro que se puede resolver fácilmente pero no consigo saber cómo. El código consiste en mandarle a una función una cadena de dos caracteres (un número hexadecimal) para que la función devuelva la conversión a binario. Os muestro el código:

Código:
Private Sub Command2_Click()
     Label4.Caption = Hex2Bin("AA")
End Sub

Private Function Hex2Bin(ByVal CodHex As String) As String
Dim CodBin As String
CodBin = ""

For i = 0 To Len(CodHex) - 1
Hex2Bin = CodBin
    Select Case UCase(CodHex(i))
        Case "0": CodBin = "0000"
        Case "1": CodBin = "0001"
        Case "2": CodBin = "0010"
        Case "3": CodBin = "0011"
        Case "4": CodBin = "0100"
        Case "5": CodBin = "0101"
        Case "6": CodBin = "0110"
        Case "7": CodBin = "0111"
        Case "8": CodBin = "1000"
        Case "9": CodBin = "1001"
        Case "A": CodBin = "1010"
        Case "B": CodBin = "1011"
        Case "C": CodBin = "1100"
        Case "D": CodBin = "1101"
        Case "E": CodBin = "1110"
        Case "F": CodBin = "1111"
    End Select
Next
Hex2Bin = Hex2Bin & CodBin
End Function
El error que me sale al compilar se encuentra sobre las primera línea de la función "Private Function Hex2Bin(ByVal CodHex As String) As String" y dice "Se esperaba una matriz" pero no consigo arreglarlo bien para que funcione el código...

A ver si me podeis ayudar. Muchas gracias.

Saludos
Alc_user
  #2 (permalink)  
Antiguo 17/10/2008, 04:34
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Paso de cadenas

Cita:
Iniciado por Alc_user Ver Mensaje
Hola a todos,

Soy un principiante en VB y estoy haciendo un código muy sencillo en Visual Basic 6.0 y me da un error que seguro que se puede resolver fácilmente pero no consigo saber cómo. El código consiste en mandarle a una función una cadena de dos caracteres (un número hexadecimal) para que la función devuelva la conversión a binario. Os muestro el código:

....

El error que me sale al compilar se encuentra sobre las primera línea de la función "Private Function Hex2Bin(ByVal CodHex As String) As String" y dice "Se esperaba una matriz" pero no consigo arreglarlo bien para que funcione el código...

A ver si me podeis ayudar. Muchas gracias.

Saludos
Alc_user
Bueno, la verdad es que el código tiene bastantes errores, te pongo como quedaría la función comentando los errores

Código:
Private Function Hex2Bin(ByVal CodHex As String) As String
Dim CodBin As String
CodBin = ""
'For i = 0 To Len(CodHex) - 1   <--- hay que leer la cadena desde el primer carácter
For i = 1 To Len(CodHex)
'Hex2Bin = CodBin  <--- esta línea sobra
'    Select Case UCase(CodHex(i)) <--- aquí estaba el error, pasas CodHex como un array
    Select Case UCase(Mid(CodHex, 1, i))

    Case "0": CodBin = "0000"
    Case "1": CodBin = "0001"
    Case "2": CodBin = "0010"
    Case "3": CodBin = "0011"
    Case "4": CodBin = "0100"
    Case "5": CodBin = "0101"
    Case "6": CodBin = "0110"
    Case "7": CodBin = "0111"
    Case "8": CodBin = "1000"
    Case "9": CodBin = "1001"
    Case "A": CodBin = "1010"
    Case "B": CodBin = "1011"
    Case "C": CodBin = "1100"
    Case "D": CodBin = "1101"
    Case "E": CodBin = "1110"
    Case "F": CodBin = "1111"
    End Select
    Hex2Bin = Hex2Bin & CodBin
Next
'Hex2Bin = Hex2Bin & CodBin  <--- tienes que concatenar las variables antes de salir del bucle
End Function
Saludos y suerte
  #3 (permalink)  
Antiguo 17/10/2008, 05:06
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Paso de cadenas

Hola, muchísimas gracias, Avellaneda, por tu ayuda. Ahora el código me funciona perfectamente. Es verdad que tenía más de un error, y es que no tenía bien entendido tampoco la concatenación. Entiendo que en la primera vuelta del bucle For, el valor de Hex2Bin es " " que se concatena a CodBin que ha tomado el valor arriba en el Switch. Y en la segunda vuelta del bucle es cuando se forma toda la cadena.

Yo tenía entendido que en la primera vuelta del bucle el nombre de la función ya debía tener un valor o daría error... Gracias por tu ayuda.

Sólo voy a hacer un apunte. Has puesto Mid(CodHex, 1, i) cuando al hacer las pruebas he visto que debía ser Mid(CodHex, i, 1). Pero se agradece igual tu ayuda.


Gracias.
Saludos
Alc_user
  #4 (permalink)  
Antiguo 17/10/2008, 05:27
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Paso de cadenas

Cita:
Iniciado por Alc_user Ver Mensaje
Sólo voy a hacer un apunte. Has puesto Mid(CodHex, 1, i) cuando al hacer las pruebas he visto que debía ser Mid(CodHex, i, 1). Pero se agradece igual tu ayuda.

Alc_user
Efectivamente, craso error por mi parte. Debería haberlo comprobado.

Lo siento y pido disculpas.

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:57.