Хакер писал(а):Надо писать два раза Not, чтобы компилятор их оптимизировал, и убрал, и сравнивать не с Not 0, а с 0.
Хакер писал(а):Потому что если бы знал, ответ на вопрос был бы тебе очевиден.
Public Stars() As Star
Public Type bld
sName As String
sNumber As Long
End Type
Public Type ress
resurs As Boolean
ruda As Long
metal As Long
kript As Long
spice As Long
End Type
Public Type SpySys
res As ress
builds() As bld
def() As bld
flot() As bld
labs() As bld
ssTime As Date
chance As Integer
isOk(4) As Boolean
End Type
Public Type Star
isPl As String
IDplanet As Long
plName As String
puncts As Long
status As Stats
usName As String
position As String
res As ress
spy As SpySys
Aliaz As String
End Type
Public Enum Stats
off = 0
war = 1
big = 2
alz = 3
wyh = 4
otr = 5
End Enum
Ну да прямо. А вдруг там UDT, строки, варианты и вся остальная нечисть.
Я это (но не только) и имел в виду. Что автор, во-первых, не указал, считать или не считать SA-дескриптор, а, во-вторых, не указал, как поступать с указателями — считать их за 4 байта, или считать данные, на которые эти указатели ссылаются.
LionK писал(а):приведенный выше пример не подошёл, в VB нельзя сохранять масивы пользовательских типов.
Option Explicit
Public Type MyType2
s() As String
End Type
Public Type MyType1
s As String
r(4) As MyType2
End Type
Private Type MyType
s() As MyType1
End Type
Public Sub Main()
MySave
MyLoad
End Sub
Private Sub MySave()
Dim mt As MyType, iHFile As Integer
ReDim mt.s(6)
ReDim mt.s(2).r(2).s(7)
mt.s(2).r(2).s(2) = "Проверочка 2"
mt.s(2).r(2).s(5) = "Проверочка 5"
iHFile = FreeFile
Open "D:\Temp\my.ddd" For Binary As #iHFile
Put #iHFile, , mt
Close #iHFile
End Sub
Private Sub MyLoad()
Dim mt As MyType, iHFile As Integer
iHFile = FreeFile
Open "D:\Temp\my.ddd" For Binary As #iHFile
Get #iHFile, , mt
Close #iHFile
Debug.Print mt.s(2).r(2).s(2)
Debug.Print mt.s(2).r(2).s(5)
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 91