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

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

10.03.2012, 20:42. Показов 3925. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru