Compartilhar via


Why does JET_coltypBit return 0xFF when set to true?

On our internal mailing list a user asked "When I retrieve a column of type JET_coltypBit that is set to true, why do I get 0xFF and not 0x1"? 

 

My co-worker Ketan had to reach deep into his memory for the answer :-)

 

In the very old days, the Jet API was designed as a replacement for the BC7 ISAM. BC = Microsoft Basic Compiler.

https://msdn.microsoft.com/en-us/library/wts33hb3(VS.80).aspx

 

"When Visual Basic converts Boolean values to numeric types, False becomes 0 and True becomes -1."

 

Now why would do they do this? Because Basic treated Boolean/Bitwise as being the "same" operation. What does "NOT" do? It flips all the bits; hence

TRUE = NOT FALSE

-1 = ~0