![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
¿Cómo obtener información de un "bit set"?
Hola a todos,
Tengo una pregunta para vosotros, a ver si podéis ayudarme, puesto que tengo ninguna o muy poca idea sobre cómo hacerlo en este caso. Se trata de que, siguiendo la ayuda de Turbo Power ShellShock, podemos leer lo siguiente Cita:
Dicho argumento es un "Cardinal", me parece recordar ahora mismo, y, en todo caso, no resulta complicado cuando contiene sólo una unidad: "If, for example, the free space on drive C: changes, Drive will be equal to 4.". El problema me surge para el caso de que dicho argumento contenga más de una unidad. Por ejemplo, dice la ayuda: "If the free space on both the C: and D: drives changed, Drive will be equal to 12.". De acuerdo, pero, ¿qué pasa si las unidades son distintas? Y, en cualquier caso, ¿cómo demonios hago para obtener del "Cardinal" las unidades? A ver si, por favor, puede alguien echarme una mano. Si necesitáis más información, cualquiera que sea, no dudéis en decírmelo y yo trataré de proporcionárosla lo antes posible. ¡Muchísimas gracias de antemano a todos! ![]() P.D. Dedico este tema a Casimiro. ![]() |
|
#2
|
||||
|
||||
|
Cada bit corresponde a una potencia de dos: bit 0 a 2^0 = 1, bit 1 a 2^1 = 2, bit 2 a 2^2 = 4, bit 3 a 2^3 = 8, etc. Si quieres saber que pasa en específico con un bit (un drive) tienes que aislarlo operando el cardinal con AND y la potencia de 2 que corresponda:
Si C and 4 <> 0 quiere decir que el bit 2 está "prendido". Me parece que en Delphi hay una clase TBits que facilita el uso de bits. // Saludos |
|
#3
|
||||
|
||||
|
Hola Dec.
Y si quisieras saber el valor de un bit en particular, o reccorrer el número para ver los valores de los diferentes bits:
Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#4
|
||||
|
||||
|
Hola,
Gracias por vuestras respuestas, aunque, no sé si podré yo sacar algo en limpio. En cuanto pueda haré pruebas y pondré aquí qué he hecho y preguntaré porqué no funciona. ![]() ¡Gracias a ambos! ![]() |
|
#5
|
||||
|
||||
|
Hola,
Como funcionar... parece que funciona. Sin embargo, me queda la espinita de no saberme quitar de encima el "mapa de unidades" que conformo "directamente" y que creo que puede hacerse de otra forma más elegante. Por lo demás, lo mío, lamentablemente, no son las matemáticas, así que sigo son comprender muy bien qué ocurre a nivel de "bits", quizá algún día... sea como sea, el código podría quedar más o menos así, a modo de ejemplo:
Por supuesto, cualquier sugerencia será bienvenida. ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Obtener información de "Opciones de carpeta..." | aeff | API de Windows | 1 | 08-10-2007 06:37:14 |
| error de sql server "Informacion de columna clave insuficiente" | jhcaboverde | Conexión con bases de datos | 1 | 17-08-2007 19:40:31 |
| Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid | lu9eui | C++ Builder | 2 | 07-08-2007 04:03:13 |
| Mas "pedazos" de informacion de Delphi! | Epachsoft | Noticias | 0 | 16-02-2007 08:23:14 |
|