Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

строку \х0054 в AnsiString

386
19 января 2010 года
newcss
297 / / 05.04.2005
Добрый день, вопрос глупый... Но я попал что-то в ступор. Объясните пожалуйста серому как
\t\x01\tform\t\x01\x0Ftype_id\x06\x0563\ramount\x06\x031\x0Fitem_id\x06\x0554\x01\robject\x06\vstore\raction\x06\abuy\x01
Вот такую строку присвоить AnsiString переменной...

Вариант:
AnsiString str= "\t\x01\tform\t\x01\x0Ftype_id\x06\x0563\ramount\x06\x031\x0Fitem_id\x06\x0554\x01\robject\x06\vstore\raction\x06\abuy\x01";

Выдает ошибку
[BCC32 Error] client.cpp(283): E2324 Numeric constant too large
[BCC32 Warning] client.cpp(283): W8007 Hexadecimal value contains too many digits
11
19 января 2010 года
oxotnik333
2.9K / / 03.08.2007
экранировать символом "\" не пробовал?
386
19 января 2010 года
newcss
297 / / 05.04.2005
'\t'+'\x01'+'\r'+"object"+'\x06'+'\v'+"store"+'\t'+"form"+'\t'+'\x01'+'\r'+"amount"+'\x06'+'\x03'+'1'+'\x0F'+"item_id"+'\x06'+'\x05'+"54"+'\x0F'+"type_id"+'\x06'+'\x05'+"63"+'\x01'+'\r'+"action"+'\x06'+'\a'+"buy"+'\x01';

Вот такой вариант так же не прокатил
[BCC32 Error] client.cpp(286): E2085 Invalid pointer addition
7
19 января 2010 года
@pixo $oft
3.4K / / 20.09.2006
Наверное,я чего-то не понимаю,но,может,имелось в виду что-то типа
 
Код:
AnsiString str="\\t\\x01\\tform\\t…\\abuy\\x01";
А вы б уточнили задачу:вам надо именно такое значение присвоить строке или то,что получится в результате интерполяции?
386
19 января 2010 года
newcss
297 / / 05.04.2005
\\x01 - в строке будет как \\х01
а нужно чтобы было '\x01' - то есть один символ это, а не 3 символа...
24K
20 января 2010 года
engel65536
50 / / 17.10.2007
Не совсем понятно, что именно вы хотите. Вот варианты для \x01:
  • str = "\x01" будет выглядеть как непечатный символ с кодом 1, т.к. контрукция типа \x<число> интерпретируется как замена на символ с указанным кодом;
  • str = "\\x01" будет выглядеть как "\x01", так как мы заэкранировали спецсимвол "\", и всё, что после "\\" будет интерпретировано просто как строка.

Цитата:
'\t'+'\x01'+'\r'+"object"+'\x06'


Здесь, разумеется, будет ошибка, так как вы пытаетесь сложить данные типа char и char*, что семантически в данной ситуации - полный бред. В таком случае вам следует, во-первых, вместо апострофов использовать кавычки (т.е. даже одиночные символы представлять как строку, а не как символ); во-вторых, хотя бы одну одну из строк привести к типу AnsiString или String, тогда для всех операций "+" будет произведено не сложение указателей, а оператор конкатенации строк класса AnsiString или String; в-третьих, если вам нужен в результате именно char*, а не AnsIString/String, то выховите для всего выражения метод c_str(). Код тогда будет выглядеть так (пишу только кусок):

 
Код:
str = ( AnsiString( "\t" )+"\x01"+"\r"+"object"+"\x06" ).c_str();
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог