TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: jonathanPIC888 en 13 de Julio de 2010, 16:51:49

Título: Vb.NET 2008 Duda con asignación de datos
Publicado por: jonathanPIC888 en 13 de Julio de 2010, 16:51:49
Hola a todos , en mi desarrollo de aplicaciones para USB he tenido algunas complicaciones básicas sobre la programación y quería saber si me podrían brindar ayuda.
Mi problema es el siguiente:
Tengo una serie de TextBox en Visual Basic.NET 2008 que tienen que pasar el valor que introduce el usuario a variables dentro del programa, pero la dificultad se me presenta cuando
quiero asignarle el valor me presenta una excepción con un error que dice lo siguiente:
Error 1 La referencia a un miembro no compartido requiere una referencia de objeto. C:\Documents and Settings\Flia. Moyano\Escritorio\ELECTRONICA\EJERCICIOS HID VB.net\EJERCICIO Nº 1 HID\Form1.vb 3 39 EJERCICIO Nº 1 HID

acá la porción de código
Código: vb.net
  1. Private Const VendorID As Short = Vid_dispositivo.Text
yo necesito que lo que el usuario ponga en el cuadro de texto ( que es un valor hexadecimal ) lo asigne a la variable VendorID.

Si alguien me puede dar una mano le estaré agradecido  :-/
Título: Re: Vb.NET 2008 Duda con asignación de datos
Publicado por: Gonzalo_BlackHawk en 13 de Julio de 2010, 23:12:12
Hola Jonathan:

Estas queriendo asignar un valor variable a una constante, por eso seguramente el error (aunque con tan poco del código es díficil saberlo). Además la propiedad Text es un tipo de datos string y estas queriendolo colocar en una variable short (Si no tienes el Option Strict en ON no te va a dar error porque el compilador trata de convertirlo automáticamente, lo cual no siempre da los resultados que uno quiere). Finalmente, el tipo Short no te va a alcanzar para almacenar el VID, porque aunque los dos son datos de 2 bytes, el short tiene signo y el VID es sin singo, asi que vas a tener que utilizar el tipo Integer de 4 bytes.

Para asignar el texto ingresado a una variable numerica coloca el siguiente código dentro de un procedimiento o función:

Código: [Seleccionar]
Dim VendorID as Integer

VendorID = CInt(Val("&H" & Vid_dispositivo.text))

Ya nos cuentas si te ha funcionado. Saludos.

Título: Re: Vb.NET 2008 Duda con asignación de datos
Publicado por: jonathanPIC888 en 14 de Julio de 2010, 10:52:07
Muchas gracias por la ayuda ya lo pude solucionar ahora sigo con mi proyecto  :-/ :-/ :-/
Un saludo !!
Título: Re: Vb.NET 2008 Duda con asignación de datos
Publicado por: willynovi en 14 de Julio de 2010, 10:58:13
y cual fue la solución? asi por si alguien tiene el mismo problema. :mrgreen:
Título: Re: Vb.NET 2008 Duda con asignación de datos
Publicado por: jonathanPIC888 en 14 de Julio de 2010, 12:57:29
Lo pongo acá tambien para que todos lo vean  :mrgreen:

Bueno dale les cuento 
1º - El problema era debido a algo básico relacionado a la programación en general: No podemos asignarle a una variable declarada un valor nulo o que aún no se ha cargado, he aquí el error en si   :z)

2º - Las variables short, si pueden tomar datos de un texbox aunque los mismo entreguen strings.

3º - Solución entonces : Al no poder cargar una variable con un valor aún no estipulado por el usuario, entonces nos ayudamos del evento TextChanged con esto elimanos este error y los datos se asignan siempre y cuando el evento ocurra; es decir cuando el usuario cargue elementos al TexBox.

Les muestro como se hace entonces.

Nosotros teniamos la siguiente variable entera de 16 bits con signo.
Código: vb.net
  1. Dim VendorID As Short

luego le cargamos datos en cuanto el usuario dispare el evento de cambios en el texbox:

Código: vb.net
  1. Private Sub Vid_dispositivo_TextChanged(ByVal sender As System.Object, ByVal As System.EventArgs) Handles Vid_dispositivo.TextChanged
  2.         VendorID = (Val(Vid_dispositivo.Text))
  3.     End Sub

y problema más que solucionado   :-/ :-/

Espero que les sirva !
Título: Re: Vb.NET 2008 Duda con asignación de datos
Publicado por: willynovi en 14 de Julio de 2010, 15:13:54
Jonathan, ahora seeeee. :P

Gracias che, ;-)