Страница: 1 |
Страница: 1 |
Вопрос: Считывание из файла
Добавлено: 14.08.07 14:28
Автор вопроса: Skywalker | Web-сайт:
Уже который раз столкнулся с проблемой, помогите решить.
Вот код 6 басика
Public Type ModelHeaderData
Ident As Long
version As Long
SkinWidth As Long
SkinHeight As Long
FrameSize As Long
NumSkins As Long
NumXYZ As Long
NumST As Long
NumTris As Long
NumGLcmds As Long
NumFrames As Long
OffsetSkins As Long
OffsetST As Long
OffsetTris As Long
OffsetFrames As Long
OffsetGLcmds As Long
OffsetEnd As Long
End Type
Private ModelHeader As ModelHeaderData
'Далее в процедуре
Dim f As Integer
f = FreeFile
Open sModel For Binary As f
Get #f, , ModelHeader
Мне нужно сделать тоже самое на VB.net. Вот пишу
Private Structure ModelHeaderData
Public Ident As Integer
Public version As Integer
Public SkinWidth As Integer
Public SkinHeight As Integer
Public FrameSize As Integer
Public NumSkins As Integer
Public NumXYZ As Integer
Public NumST As Integer
Public NumTris As Integer
Public NumGLcmds As Integer
Public NumFrames As Integer
Public OffsetSkins As Integer
Public OffsetST As Integer
Public OffsetTris As Integer
Public OffsetFrames As Integer
Public OffsetGLcmds As Integer
Public OffsetEnd As Integer
End Structure
Private ModelHeader As ModelHeaderData
'Далее в процедуре
Dim ios As New IO.FileStream(sModel, System.IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.ReadWrite)
Dim Breader As New IO.BinaryReader(ios)
ModelHeader.Ident = Breader.ReadInt32
ModelHeader.version = Breader.ReadInt32
ModelHeader.SkinWidth = Breader.ReadInt32
ModelHeader.SkinHeight = Breader.ReadInt32
ModelHeader.FrameSize = Breader.ReadInt32
ModelHeader.NumSkins = Breader.ReadInt32
ModelHeader.NumXYZ = Breader.ReadInt32
ModelHeader.NumST = Breader.ReadInt32
ModelHeader.NumTris = Breader.ReadInt32
ModelHeader.NumGLcmds = Breader.ReadInt32
ModelHeader.NumFrames = Breader.ReadInt32
ModelHeader.OffsetSkins = Breader.ReadInt32
ModelHeader.OffsetST = Breader.ReadInt32
ModelHeader.OffsetTris = Breader.ReadInt32
ModelHeader.OffsetFrames = Breader.ReadInt32
ModelHeader.OffsetGLcmds = Breader.ReadInt32
ModelHeader.OffsetEnd = Breader.ReadInt32
Однако совпадают только первые два числа, т.е. Ident и version. Остальные поля в вб.нет отличны от того, что было в вб6. Т.е. в вб6 SkinWidth=284, а вб.нет =256. Помогите пжл!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #1
Добавлено: 15.08.07 10:06
млин
не должно быть такого
hex editor'ом смотрел?
Номер ответа: 2
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #2
Добавлено: 15.08.07 13:09
Ну вот привожу начало файла в HEX:
49 44 50 32 08 00 00 00 00 01 00 00
Считывается задом наперед, берем первые 4 байта:
49 44 50 32 = 844121161 (DEC) совпадает и в старом и в новом басике. Далее 08 00 00 00 = 8 (DEC) тоже совпадает. А вот дальше уже 00 01 00 00 = 256 (DEC) и новый басик так и считывает правильно, а вот старый считывает число 284. Выходит старый считывает неправильно? о_О Но ведь там то все работает, а вот в новом неправильно
Номер ответа: 3
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #3
Добавлено: 15.08.07 13:12
Задом наперед кто не понял это значит 49 44 50 32 он переворачивает 32 50 44 49 и переводит в десятичную 844121161 и такое число и приходит в поле структуры.
Номер ответа: 4
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #4
Добавлено: 16.08.07 11:37
все уже ничего не нада, все работает
Номер ответа: 5
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #5
Добавлено: 16.08.07 12:42
а почему первые два числа правильно читались?
и как у тебя заработало-то - в чём ошибка была?
Номер ответа: 6
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #6
Добавлено: 16.08.07 19:55
да все норм читалось, просто вб6 дурной, я там вывел все числа через MsgBox и он мне только первые 2 прально написал, потом уже навел мышкой на код там всплыли значения, все совпадает, а в мсджбоксах почему-то не пральные были