Esto no tiene que ver especificamente con VB.NET, es un problema genérico de
arrays.
Repito lo que pusiste en tu código:
 
Dim valor_buffer() As Byte 
For i As Integer = 0 To args.Length - 1 
    valor_buffer(1) = args(i)
Next
 
Estás referenciando el índice=1 (que es el segundo elemento) pero
valor_buffer todavía no tiene dos elementos, más bien no tiene ninguno.
Habría que dimensionar primero el array, de esta manera:
 
Dim valor_buffer(args.Length - 1) As Byte 
Nota: en VB redimensionamos un array, indicando el índice máximo que tendrá
(o sea: la cantidad de elementos menos uno).
 
Ahora sí podemos rellenar el array
 
For i As Integer = 0 To args.Length - 1 
    valor_buffer(i) = args(i)
Next
 
El problema es que args(i) es caracter y valor_buffer(i) es de tipo Byte.
Tal vez te haga la conversión automáticamente, aunque podemos utilizar
CByte(<expresion>) para convertir.
 
O sea que, después de todo esto, tu código queda finalmente así:
 
Dim valor_buffer(args.Length-1) As Byte 
For i As Integer = 0 To args.Length - 1 
    valor_buffer(i) = CByte(args(i))
Next
 
Suerte.
Pata.
  _____  

De: vbnet@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Oscar Onorato
Enviado el: viernes, 02 de mayo de 2008 18:07
Para: vbnet List Member
Asunto: [vbnet] String a Byte



PabloC
 

lo que me copias no me ayuda mucho.
Podrias ser mas explicito?

 
No, la verdad que no.
Hago lo que puedo, lo siento.  =P
 
Saludos

El día 2 de mayo de 2008 12:32, PabloC <[EMAIL PROTECTED]> escribió:

Oscar, muy lindo lo que mandas, pero como empece este mail explicando que NO
tengo la mas remota idea de VB,NET, lo que me copias no me ayuda mucho.
Podrias ser mas explicito?
Gracias
Saludos
PabloC

----- Original Message ----- 
From: Oscar Onorato <mailto:[EMAIL PROTECTED]>  
To: vbnet List Member <mailto:vbnet@mug.org.ar>  
Sent: Friday, May 02, 2008 12:17 PM
Subject: [vbnet] String a Byte
Utilice el tipo de datos Byte para contener datos binarios.
El valor predeterminado de Byte es 0.

Sugerencias de programación


*       

        Números negativos. Dado que Byte es un tipo sin signo, no puede
representar un número negativo. Si utiliza el operador menos (-) unario en
una expresión que produce un resultado del tipo Byte, Visual Basic convierte
primero la expresión a Short.
*       

        Conversiones de formato. Cuando Visual Basic lee o escribe archivos
o cuando llama a archivos DLL, métodos y propiedades, puede convertir
automáticamente entre los formatos de datos. Los datos binarios almacenados
en variables Byte y matrices se conservan durante estas conversiones de
formato. No debería utilizar una variable String para datos binarios, ya que
su contenido puede dañarse durante la conversión entre los formatos ANSI y
Unicode.
*       

        Ampliación. El tipo de datos Byte se amplía a Short, UShort, Integer
y UInteger, Long, ULong, Decimal, Single y Double. Esto significa que se
puede convertir Byte en cualquiera de estos tipos sin encontrar un error
System.OverflowException.
*       

        Caracteres de tipo. Byte no tiene ningún carácter de tipo de literal
o de tipo de identificador.
*       

        Tipo en Framework. El tipo correspondiente en .NET Framework es la
estructura System.Byte.

Saludos 
El día 2 de mayo de 2008 11:42, PabloC <[EMAIL PROTECTED]> escribió:


Hugo con Redim funciono todo bien hasta que le envie un parametro con un
valor "3B" en ese caso me da un error de excepcion 
ERROR La conversión de la cadena "3B" en el tipo 'Byte' no es válida.
 
Alguna idea??
Saludos
PabloC

----- Original Message ----- 
From: PabloC <mailto:[EMAIL PROTECTED]>  
To: vbnet List Member <mailto:vbnet@mug.org.ar>  
Sent: Tuesday, April 29, 2008 9:58 AM
Subject: [vbnet] String a Byte
Gracias Hugo
Voy a probar
Despues comento como me fue
Saludos
PabloC

----- Original Message ----- 
From: Hugo Teijiz <mailto:[EMAIL PROTECTED]>  
To: vbnet List Member <mailto:vbnet@mug.org.ar>  
Sent: Monday, April 28, 2008 7:54 PM
Subject: [vbnet] String a Byte
Hola Pablo,
           El problema reside en que el array que utilizas es dinámico, esto
implica que debes redimensionarlo cada vez que le adicinas un elemento. Una
posibilidad es que utilices la instrucción Redim, para redimensionar el
array, esto sería que redimensiones el array en uno por cada item del array
args. La otra es utilizar un arraylist, que es algo similar al array, con la
diferencia que es una lista. De este modo, no vas a tener que preocuparte de
la dimensión del array, ya que tendrás el método Add para anexarle los
items, y luego podrás recorrerlo como si fuera un array.
 
Espero haberte ayudado
 
Saludos,
 
Hugo 
El día 28 de abril de 2008 16:45, PabloC <[EMAIL PROTECTED]>
escribió: 

Holas a todos
No tengo mucha experiencia, es mas casi nada, en VB.Net
Tengo una app de consola que recibe parametros y debo pasar esos parametros
a una rutina que hace un calculo pero que recibe ByVal valor As Byte
 
Si hago, lo de aca abajo me sale un error de exception y se muere la
applicacion
Public Shared Function Main(ByVal args As String()) As Integer

' Analizo argumentos de linea de comandos 
If args.Length = 0 Then 
Call ExplicarUso() 
Return -1 
End If 
Dim valor_buffer() As Byte 
For i As Integer = 0 To args.Length - 1 
    valor_buffer(1) = args(i)
Next
Pero si en lugar de eso lo paso FIJO funciona perfectamente
 
 
Public Shared Function Main(ByVal args As String()) As Integer

' Analizo argumentos de linea de comandos 
If args.Length = 0 Then 
Call ExplicarUso() 
Return -1 
End If 
Dim valor_buffer As Byte() = {"04", "03", "00", "00"} 
Alguna idea 
Saludos
PabloC

Responder a