Я, кажется, догадываюсь, откуда он это взял.
Точнее, откуда это взял тот, у кого он это взял.
Если сделать вот так:
- Код: Выделить всё
Type xx
a As String
b As Long
c As String * 10
d As Long
e() As Byte
End Type
Sub test()
Dim s As String
Dim x As xx
Dim f As Long
s = "abcdef" + ChrW(&H6DE)
x.a = s
x.b = -1
x.c = s
x.d = -1
x.e = s
f = FreeFile
Open "c:\testfile" For Binary As f
Put #f, , x
Close f
End Sub
То получим в файле весьма любопытный результат:
x.a будет выглядеть вот так (hex):
07 00 61 62 63 64 65 66 3Fx.c - вот так:
61 62 63 64 65 66 3F 20 20 20А x.e - вот так:
01 00 0E 00 00 00 00 00 00 00 61 00 62 00 63 00 64 00 65 00 66 00 DE 06Т.е. x.a записался как ansi, при этом в самое начало добавилась двухбайтовая длина строки.
x.c - тоже как ansi, и недостающая часть строки заполнилась пробелами.
А x.e - как массив байт (логично, в общем-то), составляющих эту строку, предварённый неким заголовком, размером ровненько в 10 байт.
Впрочем, как это всё связано с тем, как vb хранит строки в памяти - не представляю.