Язык Visual Basic на платформе .NET.
Модераторы: Ramzes, Sebas
-
Kolobuk
-
- Обычный пользователь

-
-
- Сообщения: 61
- Зарегистрирован: 24.10.2006 (Вт) 20:03
Kolobuk » 05.11.2008 (Ср) 6:25
Доброго времени суток!
Имеется структура:
- Код: Выделить всё
Structure X
Dim FLAG As Short 'флаг
Dim DL_BLOK As Integer 'длина всего блока
Dim DL_IM As Integer ' длина имени
Dim IMYA As String 'имя
End Structure
Считываю с файла:
- Код: Выделить всё
FileGet(1, STRUC.DL_IM, 7)
STRUC.IMYA = Space(STRUC.DL_IM)
FileGet(1, STRUC, 1)
Debug.Print(STRUC.FLAG)
Debug.Print(STRUC.DL_BLOK)
Debug.Print(STRUC.DL_IM)
Debug.Print(STRUC.IMYA)
STRUC.IMYA находится на 11-м байте от начала файла.
Debug же, от чего-то, выдаёт с 13-го

В чем же дело?
P.S.: Как же было просто и удобно на VB6

Спасибо!
-
Viper
-
- Артефакт VBStreets

-

-
- Сообщения: 4394
- Зарегистрирован: 12.04.2005 (Вт) 17:50
- Откуда: Н.Новгород
-
Viper » 05.11.2008 (Ср) 9:48
Все дело в выравнивании - поле DL_BLOK начинается не с 3-го байта, а с 5-го. При желании можно при помощи атрибутов сделать нужное выравнивание. На эту тему есть статья на основном сайте.
Весь мир матрица, а мы в нем потоки байтов!
-
Kolobuk
-
- Обычный пользователь

-
-
- Сообщения: 61
- Зарегистрирован: 24.10.2006 (Вт) 20:03
Kolobuk » 05.11.2008 (Ср) 11:46
Спасибо!
Если кому попадется эта же проблема, статья
тут.
Вернуться в Visual Basic .NET
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 6