![]() |
|
![]() ![]() ![]() |
|
UniBomb |
|
||||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
Нет, вопрос не про конвертирование из AnsiString в char*, это я делаю так:
Проблема вот в чём - если в ком порт поступают байты с 0х00 по 0х32, то в переменной сharrr будет всякая ерунда. Например я каждый принятый символ перевожу в число:
Допустим я принимаю строчку 0x78 0x00 0x00 0x01 0xED но в результате получаю что-нить вроде 0x78 0x00 0x26 0x45 0x88 Я так подозреваю, что число 0х00 есть символ конца строки. Имеют ли символы после 0х00 действительное значение или нет??? Это сообщение отредактировал(а) UniBomb - 24.2.2007, 18:37 |
||||
|
|||||
FFFFFFF7 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
так зачем, если это бинарные данные, запихивать в Строку? Для того есть тот же *int. --------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
не int*, а unsigned char* , а еще лучше vector<unsigned char>
а вообще, первое сообщение настолько запутаное... И вобщем все там неправильно. Так ты копируешь байты до первого нуля.
Это сообщение отредактировал(а) Fazil6 - 24.2.2007, 19:49 |
|||
|
||||
FFFFFFF7 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
Вообще-то даже short достаточно.
аргументируй. --------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
что аргументировать? |
|||
|
||||
FFFFFFF7 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
почему утверждаешь
--------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
а почему собственно int?
работаем с байтами, вполне подходит unsigned char. |
|||
|
||||
FFFFFFF7 |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
Fazil6, стукни меня (но не очень сильно), если я не прав - short это 0..255. //Вот беда - забыл Если это так, то этого вполне достаточно - всего 256 кодов (0..255).
взято "с потолка" аха. Это, как говорится, привычка. НО: интересует больше всего это утверждение: Добавлено @ 22:40 не понял смысла в использовании здесь этого класса --------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
а в чем смысл его неиспользования? vector полюбому удобнее динамического массива |
|||
|
||||
UniBomb |
|
|||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
Окей, видать пропёр сказ... Ещё раз, но только подробнее. Есть функция компонента, которая считывает принимаемые данные с компорта. Да вот беда - полученные данные она возвращает АнсиСтринговую строку(( Теперь вот ломаю голову - то ли функция так данные искажает (см. пример в первом посте), либо руки у меня такие кривые (это более правдоподобно). Опираться будем на второй вариант. Так всё таки как мне строку разбить на символы и получить их (символов) коды?
А использование vector<unsigned char> это как по воробью из гаубицы.... в упор... Это сообщение отредактировал(а) UniBomb - 24.2.2007, 23:30 |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
вот так.
с чего это вдруг? где его нужно использовать по Вашему? |
||||||
|
|||||||
UniBomb |
|
||||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
Видать я до этого ещё не дорос)) Плохо я в своё время Си изучал((
Если бы я знал что это, я бы сказал, где это можно использовать... Чтож, будем РТФМ... Спасибо)) И всё же пока хотелось бы узнать об альтернативных решениях)) Это сообщение отредактировал(а) UniBomb - 25.2.2007, 00:32 |
||||
|
|||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
альтернативное решение слишком громоздко. Для того чтобы использовать просто динамический массив нам придется таскать за ним как минимум информацию о размере (это не С строка и на 0 ориентироваться нельзя). Поэтому нужно инкапсулировать этот массив в класс.
это так, к примеру. Только вот существует STL и в ней уже все необходимое есть, а именно std::vector |
||||
|
|||||
UniBomb |
|
|||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
2 Fazil6
Ок, так, значит так. Вот только описания этого класса(?) я в своих книжках не нашёл... Толи у меня книжки плохие, толи я искал плохо. Из примера я понял как мне скопировать строку. А вот как мне всё это добро разложить побайтно и занести, скажем, в масив интов? |
|||
|
||||
Fazil6 |
|
||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
я его сам прямо здесь написал. Откуда он в книжке возмется?
она ведь и есть побайтно, куда ее раскладывать? GetData() - возвращает указатель на первый элемент. GetDataSize() - получаешь размер. GetDataSize() - 1 - максимальный индекс элемента в твоем массиве
нахрена его в инты копировать? data - вот тебе массив байтов с твоими полученными значениями
vector чтоли? Что ты такое читаешь? Страуструп, Мейерс, Сатер . STL - часть С++ . Это сообщение отредактировал(а) Fazil6 - 26.2.2007, 00:47 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |