Necesito comprobar si un determinado indicador está configurado para un número entero.Indicadores de bit a bit en Delphi
que ya sabe cómo configurar una bandera:
flags := FLAG_A or FLAG_B or FLAG_C
Pero, ¿cómo puedo comprobar si se ha establecido un cierto bandera?
En C++ usé el operador &
, pero ¿cómo funciona eso en Delphi? Estoy un poco confundido en el momento
Pero el resultado de eso es de nuevo un entero, requiero un booleano aunque :( – Mol
@Mol: Use '<> 0' o' = FLAG_A' para obtener un booleano, por ejemplo ' if (flags y FLAG_A) <> 0' luego se establece el flag. Si el flag puede tener más de un bit, use 'if (flags y FLAG_A) = FLAG_A' (porque' '> 0' solo lo probará si al menos uno de los bits del indicador está establecido, no si todos son). –
@Mol, el resultado es un número entero también en C++. C++ simplemente proporciona una conversión automática de int a bool, mientras que Delphi requiere que sea explícito sobre Lo que quiere decir es que la forma habitual es comparar contra cero, pero también puede convertir su resultado en 'LongBool'. –