Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Конвертация String и char

19.02.2012, 12:49. Показов 4643. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добро!
Проблема с конвертацией String и char, а именно вот таким способом я получаю индекс диска например диск "F" :
C++
1
2
3
String MSGSTR;
Label1->Caption =(MSGSTR+
  DWORDtoDiskNames(((PDEV_BROADCAST_VOLUME)message.LParam)->dbcv_unitmask));
здесь все нормально работает!

теперь я пытаюсь выудить о нем информацию:
C++
1
2
3
4
5
6
7
8
9
10
TCHAR volumeName[MAX_PATH + 1] = { 0 };
TCHAR fileSystemName[MAX_PATH + 1] = { 0 };
DWORD serialNumber = 0;
DWORD maxComponentLen = 0;
DWORD fileSystemFlags = 0;
if (GetVolumeInformation(
    "I:\\",    // здесь вместо "I" хочу поместить Label1->Caption или (MSGSTR+DWORDtoDiskNames.....(((PDE
           volumeName,ARRAYSIZE(volumeName),
    &serialNumber,&maxComponentLen,&fileSystemFlags,fileSystemName,
    ARRAYSIZE(fileSystemName))){Label2->Caption = (serialNumber);}
Пробовал по всякому но не смог догнать как подсунуть правильно...посоветуйте как осуществить.

Добавлено через 2 часа 42 минуты
Конвертацию или можно сказать преобразование сделал так:
C++
1
char ch2 = Edit5->Text[1];
И попробовал подсунуть ch2 сюда:
C++
1
2
3
4
5
if (GetVolumeInformation(
        ch2+":\\",    // здесь вместо "I" поместил char ch2 
           volumeName,ARRAYSIZE(volumeName),
        &serialNumber,&maxComponentLen,&fileSystemFlags,fileSystemName,
        ARRAYSIZE(fileSystemName))){Label2->Caption = (serialNumber);}
Компилятор пропустил но в Label2 тишина...

Добавлено через 15 минут
Уще так тоже компилируется а в Label2 не выводится инфа...
C++
1
2
3
4
5
6
7
8
9
10
if (GetVolumeInformation(
    Edit5->Text[1]+":\\",
    volumeName,
    ARRAYSIZE(volumeName),
    &serialNumber,
    &maxComponentLen,
    &fileSystemFlags,
    fileSystemName,
    ARRAYSIZE(fileSystemName))){
Label2->Caption = (serialNumber);}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2012, 12:49
Ответы с готовыми решениями:

Конвертация Char в unicode
Допустим есть сторка "Привет Мир!" Как эту строку переконвертировать в unicode? Я так понимаю что можно считать строку и разбить...

Конвертация из unsigned char в AnsiString
Приветствую всех. У меня возникла проблемка такая, в проге я работают с unsigned char, но так же мне надо отображать эти же строки в поле...

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

27
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
19.02.2012, 16:15
Студворк — интернет-сервис помощи студентам
У меня эти ошибки выскакивали когда я объявлял PathName как LPCTSTR.

Вероятно, есть отличия в типах между RAD Studio 2010 и XE2

Просто подберите или преобразуйте тип PathName в такой, чтобы компилятор его корректно проглотил для переменной lpRootPathName

Повторюсь, у меня в RAD Studio XE2 всё что я выше написал компилируется и корректно работает.
вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
 wchar_t *PathName;
 PathName = new wchar_t[50];
 
wcscpy (PathName,Edit2->Text.c_str());
wcscat (PathName,L":\\");
 
if(GetVolumeInformation (PathName,NULL,NULL,&serialnumber,NULL,NULL,NULL,NULL))
 
Label6->Caption = (serialnumber);
 
delete []  PathName;
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
19.02.2012, 16:22  [ТС]
C++
1
2
3
4
5
char *PathName;
 PathName = new char[50];
 
strcpy (PathName,Edit5->Text.c_str());
strcat (PathName,L":\\");
так вобще засада полная:
C++
1
2
3
4
[BCC32 Error] Unit1.cpp(1134): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] Unit1.cpp(1134): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'wchar_t *')
[BCC32 Error] Unit1.cpp(1135): E2034 Cannot convert 'wchar_t const[3]' to 'const char *'
[BCC32 Error] Unit1.cpp(1135): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'const wchar_t *')
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
19.02.2012, 16:27
Да-да,

C++
1
char *PathName;
- это актуально только для C++ Builder 6 или ниже

уже везде wchar_t используется для совместимости с Windows 7 и поддержкой необычных языков разных народов
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.02.2012, 16:32
C++
1
2
3
4
5
AnsiString str = Edit5->Text;
char *PathName;
PathName = new char[50];
strcpy (PathName,str.c_str());
strcat (PathName,":\\");
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
19.02.2012, 16:34  [ТС]
У меня всегда с Path проблемы...
Сделал для продолжения работы очень не правильно припомощи if (Edit5->Text == "I") вобщем перебираю варианты, работает но душа не спокойна, через пару недель приедут заказанные книжки с Москвы, может там что прочитаю полезного...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.02.2012, 16:36
а так
C++
1
2
AnsiString PathName = Edit2->Text+":\\";
if(GetVolumeInformation (PathName.c_str,NULL,NULL,&serialnumber,NULL,NULL,NULL,NULL))
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
19.02.2012, 16:39
так в Help встроенном всё есть про LPCTSTR и про wchar_t
TCHAR
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
19.02.2012, 16:44  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
а так
C++
1
2
AnsiString PathName = Edit2->Text+":\\";
if(GetVolumeInformation (PathName.c_str,NULL,NULL,&serialnumber,NULL,NULL,NULL,NULL))
Скопипестил так:
C++
1
2
3
4
5
6
7
8
TCHAR volumeName[MAX_PATH + 1] = { 0 };
TCHAR fileSystemName[MAX_PATH + 1] = { 0 };
DWORD serialnumber = 0;
 
 
AnsiString PathName = Edit5->Text+":\\";
if(GetVolumeInformation (PathName.c_str,NULL,NULL,&serialnumber,NULL,NULL,NULL,NULL))// здесь собака порылась...
 {Label1->Caption = (serialnumber);}
C++
1
2
[BCC32 Error] Unit1.cpp(1139): E2034 Cannot convert 'char * (_fastcall * (_closure )())()' to 'const char *'
[BCC32 Error] Unit1.cpp(1139): E2342 Type mismatch in parameter 'lpRootPathName' (wanted 'const char *', got 'void')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2012, 16:44

Конвертация UnicodeString в абстрактный const char
Всем доброе время суток. Недавно начал "знакомство" с RAD XE. И сейчас возникли проблемы с юникодом. Нужно конвектировать UnicodeString в...

Конвертация String в BYTE
Всем привет! Столкнулся с проблемой конвертации с String в BYTE. Если кто-то знает как правильно конвертнуть, буду очень благодарен!)

String в char
#include <cstring> int n, flag; FILE *f; char s="PC.dat"; struct PC{ int Num; char tip; int taktch; int OZU; int...

Из char* в String
Кто знает способ как из char* сделать String??? есть некая функция char *MoneyToStr(int m); она создает строку (выделяет под нее...

Преобразовать String в char*
Добрый день! Подскажите пожалуйста, как можно преобразовать тип char? А именно: Есть строка кода char* X="Текст в виде пути на...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru