[AccessD] SysCmd constant conflict

MartyConnelly martyconnelly at shaw.ca
Mon Aug 18 02:21:42 CDT 2003


Generally if I see constants incrementing by powers of 2    1, 2, 4, 8, 
16, 32 .... 4096 etc
I assume they are being used in this fashion of a bitmask and can be 
used in some combination.
Bitmasks are an old method used from assembler to avoid things like 
multiple "if's" or where speed is required. For example it especially 
useful in graphics if you have a bit mask associated with a pixel and it 
is surrounded by 8 other pixels, and assume that bitmask is set to  
"11111111" , if all the surrounding pixels are black, you don't have to 
test each invidual pixel for the color black if you want to know if its 
surrounded by all black pixels, you just test the bitmask for the value 256.

This may help

Public Function BinaryToDecimal(BinaryValue As String) As Long

' Returns the decimal equivalent of a binary number.

Dim idx As Integer
Dim tmp As String
Dim result As Long
Dim digits As Integer

digits = Len(BinaryValue)
For idx = digits To 1 Step -1
    tmp = Mid(BinaryValue, idx, 1)
    If tmp = "1" Then result = result + 2 ^ (digits - idx)
Next

BinaryToDecimal = result

End Function

Public Function DecimalToBinary(DecimalValue As Long, _
          MinimumDigits As Integer) As String

' Returns a string containing the binary
' representation of a positive integer.

Dim result As String
Dim ExtraDigitsNeeded As Integer

' Make sure value is not negative.
DecimalValue = Abs(DecimalValue)

' Construct the binary value.
Do
    result = CStr(DecimalValue Mod 2) & result
    DecimalValue = DecimalValue \ 2
Loop While DecimalValue > 0

' Add leading zeros if needed.

ExtraDigitsNeeded = MinimumDigits - Len(result)
If ExtraDigitsNeeded > 0 Then
    result = String(ExtraDigitsNeeded, "0") & result
End If

DecimalToBinary = result

End Function

Susan Harkins wrote:

>Thanks for the info -- learned something new today.
>
>  
>
>>>Other constants don't work like this.
>>>      
>>>
>>Many do.
>>    
>>
>
>======I don't suppose anyone could identify the others or can I just assume
>that any enum where the members could be applied at the same time will
>behave this way?
>
>Susan H.
>
>  
>




More information about the AccessD mailing list