Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Считывание из файла Добавлено: 14.08.07 14:28  

Автор вопроса:  Skywalker | Web-сайт: iSkywalker.ru | ICQ: 300-70-6пятьЪ 
Уже который раз столкнулся с проблемой, помогите решить.
Вот код 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-сайт: neco.pisem.net
 Профиль | | #1
Добавлено: 15.08.07 10:06
млин
не должно быть такого
hex editor'ом смотрел?

Ответить

Номер ответа: 2
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #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-сайт: iSkywalker.ru
 Профиль | | #3
Добавлено: 15.08.07 13:12
Задом наперед кто не понял это значит 49 44 50 32 он переворачивает 32 50 44 49 и переводит в десятичную 844121161 и такое число и приходит в поле структуры.

Ответить

Номер ответа: 4
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #4
Добавлено: 16.08.07 11:37
все уже ничего не нада, все работает

Ответить

Номер ответа: 5
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #5
Добавлено: 16.08.07 12:42
а почему первые два числа правильно читались?

и как у тебя заработало-то - в чём ошибка была?

Ответить

Номер ответа: 6
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #6
Добавлено: 16.08.07 19:55
да все норм читалось, просто вб6 дурной, я там вывел все числа через MsgBox и он мне только первые 2 прально написал, потом уже навел мышкой на код там всплыли значения, все совпадает, а в мсджбоксах почему-то не пральные были

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам