Это бага или фича?
Массив 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 bolVarTrue
-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 Сейчас этот форум просматривают: AhrefsBot и гости: 9