Exclusive Or With Strings
Let's say you need to keep track of things that happen on certain days of the week. This is done through a 7 character string where each character is a "0" (didn't happen) or a "1" (did happen). The first character relates to Sunday, the second to Monday, and so on. A string of "0010010" would mean this 'thing' happend on Tuesday and Friday.Here's an Exclusive Or function that will flip bit's to "1". Exclusive Or says that if either bit is a 1 (in either string) then it's a 1 in the destination. So, if you take the above string above (Tuesday and Friday set) and want to set Saturday, you can Exclusive Or the first string with "0000001" and get the final string of "0010011" which indicates the 'thing' happened on Tuesday, Friday, and Saturday.
Function ExclusiveOr(inpValue1 As String, inpValue2 As String) As String
On Error Goto BubbleError
' Two strings of 0's and 1's are combined in an exclusive or fashion - if either "bit" has
' a 1, the value is 1 and if both are 0's the value is 0.
Dim value1 As String
Dim value2 As String
Dim retVal As String
Dim comp As String
Dim i As Integer
' If one string is shorter than the other, pad THE FRONT of the shorter string with 0's
value1 = inpValue1
value2 = inpValue2
If Len(value1) < Len(value2) Then value1 = String$(Len(value2)-Len(value1), "0") & value1
If Len(value2) < Len(value1) Then value2 = String$(Len(value1)-Len(value2), "0") & value2
' If either string has something besides 0's and 1's, return AN EMPTY STRING
comp = ""
For i = 1 To Len(value1)
comp = comp & "[01]" ' This will the the pattern - every character is 0 or 1 and there's "x" of them
Next
If (Not value1 Like comp) Or (Not value2 Like comp) Then
ExclusiveOr = ""
Exit Function ' ============================================================
End If
' Go through every character and compare the same position on the two strings. If both are
' zero, then put 0 in the return string. Otherwise one of the two strings (or both) has a
' one in that position (because we checked the format above) and put a 1 in the return string.
 retVal = ""
For i = 1 To Len(value1)
If Mid(value1, i, 1) = "0" And Mid(value2, i, 1) = "0" Then
 retVal = retVal & "0"
Else ' One or both is a "1"
 retVal = retVal & "1"
End If
Next
ExclusiveOr = retVal
Exit Function
BubbleError:
Error Err, Error$ & Chr$(10) & "in function " & Getthreadinfo(1) & ", line " & Cstr(Erl)
End Function