Visual Basic - Preguntas sobre Words y bytes

Life is soft - evento anual de software empresarial
 
Vista:

Preguntas sobre Words y bytes

Publicado por McRight (21 intervenciones) el 06/09/2003 20:47:57
Hola,

tengo que realizar una aplicación, en la cual tengo un dato de 2 bytes, no he encontrado el tipo de datos Word (como en Delphi), asi q le he puesto a mi variable Integer.
Luego, debo sacar el byte alto y el byte bajo en distintas variables.

¿Hay alguna forma de sacarle a un dato de 2 bytes, cada uno de los bytes en variables tipo Byte diferente?

Gracias y salu2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Preguntas sobre Words y bytes

Publicado por Juan (284 intervenciones) el 06/09/2003 22:59:37
Pues si se puede, pero hay que hechar mano de una función API y de la oscura y no documentada en la ayuda, función VarPtr. Aquí tienes un ejemplo:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Form_Click()
Dim entero As Integer
Dim byteAlto As Byte, byteBajo As Byte
entero = CInt(InputBox("Introduce un valor para el entero"))
CopyMemory byteBajo, entero, 1
CopyMemory byteAlto, ByVal VarPtr(entero) + 1, 1
MsgBox "El byte alto es " & CStr(byteAlto) & ", y el bajo es " & CStr(byteBajo)
End Sub

Para los que no lo sepan VarPtr devuelve un Long con la dirección de memoria de la variable que recibe como parámetro. Si, como si usaramos punteros. Para variabels de tipo String hay que usar StrPtr.
Bueno, y CopyMemory hace lo que su nombre indica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Preguntas sobre Words y bytes

Publicado por McRight (21 intervenciones) el 08/09/2003 01:21:12
Hola, gracias x tu ayuda,

x si os sirve de ayuda he encontrado otra forma un poco más sencillo y sin APIs.

Dim entero As Integer
Dim byteAlto As Byte, byteBajo As Byte
byteBajo = entero And &HFF
byteAlto = entero \ &H100

Espero q le sirva a alguien igual q a mi, gracias d nuevo Juan.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar