Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как преобразовать элемент TStringList в char, если в элементе строковое отбражение HEX 
:(
    Опции темы
=Женек=
Дата 8.2.2012, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Господа дана строка из TStringList: 

Dat->Strings[i].SubString(4,2);

Она содержит два символа, скажем "FF". Как мне получить переменную типа unsigned char, то есть 255 или символ с соответствующим кодом?

PM MAIL   Вверх
586
Дата 8.2.2012, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Код
String s = Dat->Strings[i].SubString(4,2)
char a = s[1];     // и обрати внимание, что символы индексируются в String с единицы а не с нуля
char b = s[2];


Это сообщение отредактировал(а) 586 - 8.2.2012, 19:23
PM   Вверх
=Женек=
Дата 8.2.2012, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



По-моему не то.. в а будет число, означающее номер в таблице ASCII символа s[1]
Впрочем, я уже проблему решил написав функцию. Я просто думал, что есть решение поизящней, типа HexStringToChar(string s, unsigned char c)
PM MAIL   Вверх
586
Дата 8.2.2012, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



А, понятно. Есть уже готовая функция - HexToBin:
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char buf[3];
    HexToBin("FFFF00", buf, 3);
    Caption = buf;
}

PM   Вверх
=Женек=
Дата 8.2.2012, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Посоветовали сделать так:
unsigned char n = strtol("A5" , NULL, 16);//n=165

Получилось.

Но помогите заставить работать это:
Код

TStringList *Dat = new TStringList;
Dat->LoadFromFile("d:/hex.hex");//загрузка файла

unsigned char n = strtol( Dat->Strings[1].SubString(2,2) , NULL, 16);//n=165




Это сообщение отредактировал(а) =Женек= - 8.2.2012, 20:18
PM MAIL   Вверх
586
Дата 8.2.2012, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



unsigned char n = strtol( Dat->Strings[1].SubString(2,2).c_str() , NULL, 16);
PM   Вверх
=Женек=
Дата 8.2.2012, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Пытался сделать так.
Выдает:
[BCC32 Error] SMD_Reflow.cpp(1167): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] SMD_Reflow.cpp(1167): E2342 Type mismatch in parameter '__s' (wanted 'const char *', got 'wchar_t *')

PM MAIL   Вверх
586
Дата 8.2.2012, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



unsigned char n = wcstol( Dat->Strings[1].SubString(2,2).c_str() , NULL, 16);
PM   Вверх
=Женек=
Дата 8.2.2012, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: 1
Всего: 1



Опаньки, спасибо, работает!


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.