buenas estoy teniendo un problema con lo siguiente
Private Sub Form_Load()
Dim a As Double
Dim b As Double
a = 4195038069#
b = &HF0F
Debug.Print a And b
End Sub
esto me esta dando un error 6 Desbordamiento
estoy intentando pasar una funcion de PHP a visual basic, en PHP no da error y me imprime como resultado "773" probe esto mismo en la calculadora de windows y tambien "773"
ahora no se porque visual basic no permite esta operaciones.
abra una forma de realizar la operación.?¿?
Saludos
Talvez el and no soporte mas arriba de un rango de numeros y por eso este el error :xD
PD: No estoy seguro pero creo que esa es la razón
Hola, no estoy muy metido en als operaciones de bit a bit de esta forma pero investigando arme algo asi:
Option Explicit
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal DestL As Long)
Private Sub Form_Load()
Dim a As Long
Dim b As Long
Dim l As Long
a = CDec(4195038069#)
MoveMemory l, ByVal VarPtr(a) + 8, 4
b = &HF0F
Debug.Print (l And b)
End Sub
y retorna 773. en .NET funciona sin hacer tanto lio, o sea funciona como lo pusiste primero. si alguien sabe la forma sin hacer todo eso mejor.aca dice algo del tema y dice de algunas limitaciones en los tipos de datos a lo ultimo de la pagina, si no lei mal.
Operadores lógicos y bit a bit en Visual Basic (http://msdn.microsoft.com/es-es/library/wz3k228a%28VS.80%29.aspx)
saludos.
hola Seba gracias por la respuesta, pero sigo con error de desbordamiento
a = CDec(4195038069#)
creo que es mas complicado de lo que pensaba. pero en fin voy a seguir buscando.
Saludos.
Listo que boludo lo esta haciendo en otra parte del codigo y no me di cuenta
Private Sub Form_Load()
Dim a As Double
Dim b As Double
a = 4195038069#
b = &HF0F
debug.print fsafe(a,b)
end sub
Private Function fSafe(Val1 As Double, Val2 As Double) As Double
Dim R As Double
If Val1 > 2147483647 Then
Val1 = Val1 - 4294967296#
End If
fSafe = Val1 And Val2
End Function