Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: LeandroA en Agosto 08, 2009, 05:00:06 pm
-
Hola, para romper el hielo pregunto primero ;D
Tengo un código que extraje de algún lugar y no logro interpretarlo.
Bien en determinada parte del código hay que redimensionar un array según la cantidad de Bits por Pixel de una imágen
mi duda es qué es lo que hace cuando utiliza "And Not" es los siguientes cálculos
Select Case BitsPerPixel
Case 1
lngStride = ((bi24BitInfo.bmiHeader.biWidth + 31) And Not 31) \ 8
Case 4
lngStride = ((bi24BitInfo.bmiHeader.biWidth + 7) And Not 7) \ 2
Case 8
lngStride = (bi24BitInfo.bmiHeader.biWidth + 3) And Not 3
Case 16
lngStride = ((bi24BitInfo.bmiHeader.biWidth * 2) + 2) And Not 2
Case 24
lngStride = ((bi24BitInfo.bmiHeader.biWidth * 3) + 3) And Not 3
Case 32
lngStride = bi24BitInfo.bmiHeader.biWidth * 4
End Select
ReDim bBytes((bi24BitInfo.bmiHeader.biHeight * lngStride) - 1)
es algo así como utilizar la función mod?
para probar hice esto
Private Sub Form_Load()
Dim x As Long
x = ((5 * 3) + 3) And Not 3
MsgBox x '= 16
x = ((5 * 3) + 3) And Not 4
MsgBox x '= 18
End Sub
pero sigo sin entender qué es lo que hace el "And Not"
Saludos
-
Hola, mira vos no lo conocia, parece ser que no toma el valor la linea si es igual a lo que le pones despues del And Not...por ejemplo hice una funcion tonta para darme cuenta...
Private Sub Form_Load()
Call Prueba(3)
End Sub
Private Function Prueba(ByVal vNumero As Integer) As Integer
Dim b As Integer
b = 0
Select Case vNumero
Case 3
b = 2 + 1 And Not 1
Debug.Print b
End Select
a = b
End Function
entra en el case, 2+1 =3 pero como le pongo And Not 1 solo toma el 2...y si le pongo el 2 solo devuelve el 1.. jeje
saludos.
-
si no me equivoco, usa los Booleans, por ejemplo,
If 2 Then
Msgbox "hola"
End If
el valor boolean puede ser un Long, Int o algun numero. Si es 0, indica False, de lo contrario True.
pero tambien estuve fijandome, si haces un And Not con 2 numeros, el resultado es un valor booleano, (0 o 1). pero vos fijate:
Debug.Print 1 And 5 'devuelve 1 = true
Debug.Print 1 And 3 'devuelve 1 = true
Debug.Print 1 And 4 'devuelve 0 = false
Debug.Print 2 And 4 'devuelve 0 = false
Debug.Print 0 And 5 'devuelve 0 = false
sinceramente nose que corno hace, es extraño esto de bool con numeros.
saludos
-
Saliendome del tema para que sirven los friend que diferencia hay o en q momento se usa
"estaba buscando un buen foro parece que ya lo encuentre :D"
-
Saliendome del tema para que sirven los friend que diferencia hay o en q momento se usa
"estaba buscando un buen foro parece que ya lo encuentre :D"
no va aca esto, y busca en google.
de todas formas, fijate aca:
http://www.canalvisualbasic.net/foro/visual-basic-6-0/friend-sub-para-que-es-6368/
saludos
-
jaja bueno la verdad no me quedo nada claro pero ya fue, tambien pregunte en un foro de matematica y me dieron una respuesta pero en fin.... [link] (http://rinconmatematico.com/foros/index.php?topic=23942.new#new)
Saliendome del tema para que sirven los friend que diferencia hay o en q momento se usa
"estaba buscando un buen foro parece que ya lo encuentre :D"
bueno ira en otro post pero como sos el segundo en preguntar algo se hace una excepción ;)
Bueno los Amigos sirven para cuando tenes un problema ellos te pueden ayudar o para manguearte cuando se quedan si plata ( ;D ;D Chiste malo)
No en serio, cuando declaramos una Funcion o Sub como Friend se puede utilizar solo dentro del mismo proyecto, por ejemplo si vos creas una dll o un ActiveX, y tenes un modulo clase en el que declaraste Friend function EnumerarClaves() as Boolean esta funcion la podes llamar desde cualquier lado dentro del proyecto, por ejemplo otro modulo/formulario, ahora cuando compilas esta dll/ActiveX y la cargas en otro proyecto ya no podes acceder más a esa funcion.
Esto sirve para protejer el uso externo de esta funcion, es decir son amigas dentro del mismo proyecto.
bueno esta es mi triste explicación, algo mas detallado pero creo que menos entendible podes mirar en la MSDN (http://msdn.microsoft.com/es-es/library/08w05ey2%28VS.80%29.aspx)
Saludos
-
A ver, voy a romper los huevos.. digo el hielo con mi primer post. "A desempolvar mis conocimientos de alfareria!!"
Bien AND como OR, XOR, etc es un operador booleano , que pinga es? bueno el coco tendria que saberlo si es que sabe compuertas logicas!
mmm Ahi va mi tabla
0 1 0 1
0 0 1 1
---------
0 0 0 1
que es eso? bueno ahora voy a intentar explicarlo
Ej: 3 and 1 = 1
bien si convertimos esto a binario va a ser algo asi
1 1 <----3
0 1 <-----1
----
0 1<-----1 resultado
bien, siguiendo la logica de la tabla cuando tengamos dos 1 el resultado va a ser 1.
Ahora el not simplemente invierte, niega el resultado.
0 1<-----1 resultado , si lo invertimos es 1 0 que es igual a 2
Bueno espero que alguno entienda esto...
-
perfecto ;D ahora si se entendio, se pasa el valor a binario y luego en la suma de cada valor si ambos son positivos da un positivo y el resultado lo pasamos a decimal.
4 and 5 = 4
100
101
---
100
y en el caso de And Not se resta el segundo valor al primero, pero los numeros no pasan a negativo sino que quedan en 0 ej: 0-1 =0
'5 and not 3 =4
'101
'011
'----
'100
'3 and not 3 = 0
'011
'011
'----
'000
'8 And Not 5 = 8
'1000
'0101
'----
'1000
Muchas gracias.