строку \х0054 в AnsiString
\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
экранировать символом "\" не пробовал?
Вот такой вариант так же не прокатил
[BCC32 Error] client.cpp(286): E2085 Invalid pointer addition
Код:
AnsiString str="\\t\\x01\\tform\\t…\\abuy\\x01";
а нужно чтобы было '\x01' - то есть один символ это, а не 3 символа...
- 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();