Преобразование типов

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

Преобразование типов

Сообщение z0ran » 23.09.2005 (Пт) 12:54

Здравствуйте!
Подскажите пожалуйста как решить следущую проблему

BuffData&=Mid(Text1.Text,1,2)

Дело в том, что в TextBox-е у меня хранится пакет данных в формате HEX и как только я считываю значения A или B,C,D,E,F у меня происходит ошибка несовпадения типов. Подскажите, как решить проблему? Пытался решить проблему самостоятельно, к сожалению у меня нет толкового учебника, а в стандартных, описаниях по типам нигде такой случай не рассмотрен. Проблему решил через считывание ASCLL кодов, но больно уж гиморройно все.

Буду благодарен за любую ссылку, любой ответ на мой вопрос.

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

Сообщение alibek » 23.09.2005 (Пт) 13:13

Пакет данных или байт?
Если байт, то:

BuffData& = Val("&h" & Mid$(...))

Если пакет, то примерно так же.
Lasciate ogni speranza, voi ch'entrate.

z0ran
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.09.2005 (Пт) 12:19

Сообщение z0ran » 23.09.2005 (Пт) 13:31

Спасибо большое, Alibek!
Мысль понял, посмотрел инфу на ф-ию Val, просто на VB программирую недавно и не знаю значения ф-ий.
В описанном выше примере, я считываю значения пакета побайтно.Если я правильно понял то разница, при считывании пакета, лишь в том, что ...Mid$(...,1,порядковый номер последнего символа), либо реализовать по другому, главное, факт в том, что ф-я Val схавает и весь пакет при условии наличия в нем лишь 0...9 и A,B,C,D,E,F. Остальные символы не воспринимаются.

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

Сообщение alibek » 23.09.2005 (Пт) 13:37

Да, и префикса &h, который указывает, что число идет в шестнадцатиричной нотации.
Если данное преобразование используется часто, то имеет смысл использовать не Val, а работать непосредственно с кодами символов -- (LowOrder+256*(127 And HiOrder)), получая LowOrder/HiOrder либо через Asc(Mid$(...)), либо конвертируя в байтовый массив; это позволит увеличить быстродействие.
Lasciate ogni speranza, voi ch'entrate.

z0ran
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.09.2005 (Пт) 12:19

Сообщение z0ran » 23.09.2005 (Пт) 14:25

Приношу свои извенения я не совсем подробно описал задачу. После считывания пакета мне необходимо подсчитать CRC, в данном случае я немного не допонимаю как при помощи ASCLL кодов далее проще осуществлять преобразования, т.е. впринципе как я описал в самом начале я так и делал

CodeData=Asc(Mid$(..)),

Ок, например я перевел весь пакет в ASCLL символы, а далее начался гиморр, мне пришлось из ASCLL переводить в Decimal, может я не прав или не улавливаю фишку?

z0ran
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.09.2005 (Пт) 12:19

Сообщение z0ran » 23.09.2005 (Пт) 14:27

тоесть переводить в Dec по значениям ASCLL

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.09.2005 (Пт) 22:17

1) А-эс-це-и-и. ASCII. American standard code for information interchange.
2) Просто присвоить строку массиву байт, и работать с этим массивом байт, не проще выйдет?
Изображение


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 104

    TopList