Это бага или фича?
Массив Integer, например, генерирует Type Mismatch
Dim bolVar As Boolean, bytArr() As Byte
bytArr = vbNullString
bolVar = bytArr
Debug.Print bolVar
Debug.Print Not bytArr
bolVar = Not bytArr
Debug.Print bolVar
bolVar = Not Not bytArr
Debug.Print bolVar
True
-1501569 ' Или, что веселее - другое число
True
True
Dim b() As Byte
b = "bogus"
Debug.Print CBool(b) ' натурально, печатает строку "bogus" 8-|
Dim bytArr() As Byte, bolVar As Boolean
bytArr = "bogus"
bolVar = bytArr ' SUCCESS
bolVar = CBool(bytArr) ' ERROR: TYPE MISMATCH
Antonariy писал(а):Действительно, похоже где-то глубоко внутри VB не делает особых различий между строкой и байтовым массивом.
Dim bt() As Byte, bl As Boolean
bt = "bogus"
bl = bt
Debug.Print Hex(Peek(VarPtr(bl)) And &HFFFF&)
Debug.Print Not bytArr
Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 52