С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910

Конвертация UnicodeString в абстрактный const char

10.03.2012, 20:42. Показов 3910. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброе время суток.
Недавно начал "знакомство" с RAD XE. И сейчас возникли проблемы с юникодом. Нужно конвектировать UnicodeString в абстрактный const char. Превычный c_str посылает в известном направлении. Прочитал, что теперь он называется t_str, но и его использование не помогло (ибо он тоже имеет тип WideChar*). Появлись мысли, что для данной конвертации нужны дополнительные объявления или нужно изменить настроки IDE. Но пока стою на месте.
Миниатюры
Конвертация UnicodeString в абстрактный const char  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2012, 20:42
Ответы с готовыми решениями:

const unsigned char to unicodestring
Здравствуйте! Пишу небольшую программу с использованием sqlite. В результате запроса получаем данные типа: const unsigned char*. Что бы...

Не могу преобразовать из UnicodeString в const char*
Нашел на просторах интернета функцию для работы с буфером обмена int SetTextToClipboard(String text) { if (OpenClipboard(hWnd))//...

WinExec: Cannot convert 'UnicodeString' to 'const char *'
Ребят извеняюсь если была такая тема но я поиском не нашел,а в гугле не понял Есть едит в него вбивается путь файла что то вроде...

14
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
10.03.2012, 21:00
Похоже Ваш случай:
C++
1
#ifdef _DELPHI_STRING_UNICODE
Подробней в первоисточнике http://docwiki.embarcadero.com... RAD_Studio
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
10.03.2012, 21:15  [ТС]
the method UnicodeString::t_str() returns 'const char* instead of const wchar_t*
Теперь я окончательно запутался)) В мануале написано, что данный метод теперь должен возвращать const char *. Вроде с английским не так туго. Изменение карты символов c wchar_t на char и декларации тоже не помогли.
Чет не очень хочется дописывать (char*) к каждому преобразованию.
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
10.03.2012, 21:30
Хорошо бы выложить код и ошибку. Я так делал(или не так?) и у меня всё работало. На домашнем компе нет компилятора, поэтому уточнить смогу только завтра на работе.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
10.03.2012, 21:45  [ТС]
Берем для примера элементарную ситуацию:
C++
1
2
UnicodeString value = "hello world";
char * test = value.t_str(); // value.c_str();
Получаем ошибку:
E2034 Cannot convert 'wchar_t*' to 'char *'
.
Пробовал так:
C++
1
2
3
#ifdef _DELPHI_STRING_UNICODE
// код
#endif
и
C++
1
2
#define _DELPHI_STRING_UNICODE
// код
И получаю аналогичную ошибку.

Добавлено через 6 минут
Вот пример с той ссылки:
C++
1
2
3
4
5
6
7
8
void ProcessSelectedItem(const char* item);
 
void __fastcall TForm6::ListView1DblClick(TObject *Sender)
{
    int index = ListView1->Selected->Index;
    TListItem *ClassItem = ListView1->Items->Item[index];
    ProcessSelectedItem(ClassItem->Caption.t_str());
}
Здесь видно, что t_str должен возвращать никак не wchar_t.
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
10.03.2012, 21:54
А так?
C++
1
2
3
UnicodeString value = "hello world";
char * test = new char[100];
test = value.t_str(); // value.c_str();
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
10.03.2012, 21:58  [ТС]
Аналогично. В моем случае, должен был вернуться временный указатель, в последнем копирование масива. Поэтому разницы и не должно было быть в этом ключе
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
10.03.2012, 21:59
Вот посмотрите:
Не работает SelectDirectory
20 пост
1
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
10.03.2012, 22:18  [ТС]
Посмотрел, все говорит о том, что нужно банально использовать t_str и изменить настроки _TCHAR на char. Но даже если использовать String результат один. Вообщем какая-то печалька с компилятором.
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
11.03.2012, 10:56
Завтра на работе попробую и по результату отпишусь.

Добавлено через 12 часов 23 минуты
Посмотрел:
Ситуация аналогичная.
Пока только вижу выход в замене всех chart на wchar_t
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.03.2012, 12:09
Цитата Сообщение от _engineer_ Посмотреть сообщение
Пока только вижу выход в замене всех chart на wchar_t
это не выход, это правильное решение.
Хотя в настройках можно указать tchar maps - char или wchar_t
1
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
11.03.2012, 13:23
Цитата Сообщение от LK Посмотреть сообщение
Хотя в настройках можно указать tchar maps - char или wchar_t
Менял и пере создавал проект, реакции ноль
0
Cyber32768
11.03.2012, 16:11
Решение уже пробегало на форуме:

C
1
2
UnicodeString UStr = "test";
unsigned char *str = AnsiString(UStr).c_str();
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
11.03.2012, 16:38
Заработало, хотя мне и не надо, все равно спасибо.

а я побывал только так:
C++
1
unsigned char *str = AnsiString(UStr).t_str();
Тормоз одним словом
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
11.03.2012, 17:19  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
это не выход, это правильное решение.
Хотя в настройках можно указать tchar maps - char или wchar_t
Видимо работоспособность данной опции поддерживает только в лицухе Или там какие-то танцы с бубном идут. Попробую еще повозиться. RAD XE в целом понравился, да и исправление некоторых моментов порадовало.

Цитата Сообщение от Cyber32768 Посмотреть сообщение
Решение уже пробегало на форуме:
Можно тогда просто (char*) подставить при конвертации из юникода, тоже работать должно. Все надеялся на наличие флага, при котором только t_str возвращает char. Хотя, прочитав посты MikeSoft касательно String, думаю, что они намудрили. Видимо для "старых" модулей нужно просто использовать AnsiString в классах, чтобы на порядок не увеличивать количество операций. Но тут еще почитаю на тему UnicodeString -> AnsiString.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2012, 17:19
Помогаю со студенческими работами здесь

Конвертация unsigned char* в UnicodeString
Есть строка, которая приходит чрез СОМ порт в формате unsiged char, мне ее надо записать в edit, я делаю так: Edit->Text =...

Конвертация UnicodeString в wchar_t
Начинаю только изучать С++ . Заранее прошу прощения за такой вопрос, не хотел задавать его на форуме, но уже прошло 4 дня, а я до сих пор...

Ошибка E2034: Cannot convert 'TStrings * const' to 'UnicodeString'
я пишу программу отправки на Email когда я пишу строчку IdMessage1->Body->Text=Memo1->Lines;// текст компилятор выбивает вот такую ошибку ...

Ошибка: E2034 Cannot convert 'char const[51]' to 'const wchar_t *
Пытаюсь добавить в memo1 название файлов располагающихся в каталоге, в Console Application все отлично, а тут проблема. ...

Ошибка E2034: Cannot convert 'char const[8]' to 'const wchar_t *'
Прошу прощения за свой вопрос, но я никак не пойму где ошибка? использую c++ builder 10 (если это как то связано) выдает следующие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru