Strange Bug in VB 2005
That's THE strangest bug I ever encountered while working with Visual Basic. Ever!
I was parsing a list of strings that was separated by a CR/LF
pair. Something like this:
The quick brown fox jumped over the lazy dog.[CR][LF]
Miss Piggy sent Kermit an email.[CR][LF]
Lois was cheating on Clark[CR][LF]
So, I used the following command to get an array of strings:
Dim aStrList as String() = _
strFullList.Replace(vbLf, "").Split(vbCr)
Simple, right?
And then I went to my loop:
For Each strItem As String In aStrList
If (strItem = "") Then
Exit For
End If
'... do whatever...
Next
The first time I ran it it crashed my code. I took me some time to discover why.
Apparently the last item of the array, instead of being and empty string, is a String
which contains a single "character" Nothing
.
The ONLY way I could find to workaround this stuff was changing my test line to look like this:
If (strItem.Chars(0) = Nothing) Then
For the sake of completion, this strange string has the following properties:
Test | Result |
---|---|
strItem = "" | False |
strItem = Nothing | False |
strItem.Length = 0 | False |
strItem.Length = 1 | True |
However when examined in the "Quick Watch" window it does show strItem
as an empty string.
Comments
Post a Comment