Вопрос к настоящим профессионалам

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alkoch
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 18.11.2002 (Пн) 18:20

Вопрос к настоящим профессионалам

Сообщение Alkoch » 10.04.2003 (Чт) 8:42

Суть проблемы: имеется устройство, работающее с USB портом. DLL со служебными функциями к этому устройству, обеспекчивающими обмен с РС, написана на Си. В качестве параметра всех функций используется структура данных. Описание структуры есть. Так вот, если писать пользовательскую программу на VB, то вместо структуры приходится использовать пользовательский тип данных. Но возникает проблема с выравниванием полей конфигурационной структуры.
В .dll предполагается, что поля конфигурационной
структуры выровнены на границу байта. Сейчас проблема решается путем упаковки/распаковки структуры, что очень сложно и громоздко. Это решение предложено самими программистами, создавшими DLL.
Я - не программист, а пользователь устройстваупаковка/распаковка конфигурационной структуры. :( Для меня это вообще темный лес. Поэтому, если кто-нибудь знает, как тоже самое сделать в VB с полями UDT (повторяю как попугай слова спецов), и можно обойтись без упаковки/распаковки, то я буду очень признателен.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.04.2003 (Чт) 12:06

Я не совсем понял.
Сместить биты можно умножением/делением; умножение на 2, 4, 8 смещает, соответственно, все биты на 1, 2 и 3 разряда влево, деление смещает вправо. Если нужно осуществить циклический сдвиг, то тут сложнее, нужно наложением маски выделить сдвигаемые граничные разряды, произвести сдвиг, а затем наложить сохраненные разряды, (предварительно сдвинув их).
Lasciate ogni speranza, voi ch'entrate.

Alkoch
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 18.11.2002 (Пн) 18:20

Сообщение Alkoch » 10.04.2003 (Чт) 18:57

Насколько я понимаю, из-за сложности и многоуровневости сруктуры совсем не просто определить, где при ее формировании VB вставляет лишние байты . Поэтому речь идет о поиске какого-то приема, который позволил бы избавиться от этих байтов автоматически (то, что программисты и назвали мне "выравнивание полей UDT").

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 11.04.2003 (Пт) 12:33

такого быть не может!

Скорее всего у тебя проблема UNICODE-ANSI или в том что в VB числовые типы(их названия) по битности отличаются от C.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 11.04.2003 (Пт) 16:13

Чего-чего?
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 12.04.2003 (Сб) 2:32

Наверно он имеет ввиду тот факт, что ВБ сторки хранит в Wide формате, т.е. 2 байта на символ. Я только не понимаю причем здесь это :?:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Alkoch
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 18.11.2002 (Пн) 18:20

Сообщение Alkoch » 14.04.2003 (Пн) 8:35

Может быть вам что-нибудь скажет тот факт, что размер структуры, полученный с помощью Len, равен 297, а с помощью BLen та же самая структура уже 304 байта. Я не понимаю, почему. :?:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.04.2003 (Пн) 9:22

Sebas скорее всего прав. В структуре есть тип String? Скорее всего в нем собака зарыта :)
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 1

    TopList