Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
D_Kovsh
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 4
#1

ошибка "Cannot convert 'char' to 'wchar_t *' "

16.09.2013, 22:51. Просмотров 1292. Ответов 9
Метки нет (Все метки)

Здравствуйте. Подскажите, пожалуйста, как избавиться от ошибки Cannot convert 'char[4096]' to 'wchar_t *'?

сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char buf[4096];
char bb[30];
 
int proverka=0, schetchik=1;
long time;
 
Memo1->GetTextBuf(buf,4096); // ошибка
if (Memo1->GetTextLen())
{
if (Form1->CheckBox1->Checked==true)
        schetchik=NumCicle;
 
proverka=WritePort(buf, strlen(buf), schetchik,&time);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 22:51
Ответы с готовыми решениями:

Ошибка E2034 Cannot convert 'wchar_t *' to 'char *'
Ошибка при компиляции (bcc32error) смотреть скриншот Установлена последняя...

Ошибка - Cannot convert 'wchar_t *' to 'const char *'
В событии компонента TStringGrid OnDrawCell перерисовываю ячейки. Текст вывожу...

RAD XE ShellExecute - сообщение "Cannot convert 'wchar_t *'"
после перевода проекта на BorlandXE стали вываливаться ошибки при компиляции:...

Ошибка при подключении к XE3 библиотеки для VS: "Please use native wchar_t type (/Zc:wchar_t)"
Господа, пытаюсь прикрутить к билдеру библиотеку для работы с автокадом. К...

Как исправить ошибку "cannot convert 'char const[1]' to 'int'"?
подскажите на примере как исправить ошибку. Unit1_RightEndDoor.cpp(1485):...

9
Tarik20
21 / 22 / 5
Регистрация: 14.02.2013
Сообщений: 243
16.09.2013, 23:30 #2
Цитата Сообщение от D_Kovsh Посмотреть сообщение
Здравствуйте. Подскажите, пожалуйста, как избавиться от ошибки Cannot convert 'char[4096]' to 'wchar_t *'?

сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char buf[4096];
char bb[30];
 
int proverka=0, schetchik=1;
long time;
 
Memo1->GetTextBuf(buf,4096); // ошибка
if (Memo1->GetTextLen())
{
if (Form1->CheckBox1->Checked==true)
        schetchik=NumCicle;
 
proverka=WritePort(buf, strlen(buf), schetchik,&time);
Попробуй:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
wchar_t buf[4096];
wchar_t bb[30];
 
int proverka=0, schetchik=1;
long time;
 
Memo1->GetTextBuf(buf,4096); // ошибка
if (Memo1->GetTextLen())
{
if (Form1->CheckBox1->Checked==true)
        schetchik=NumCicle;
 
proverka=WritePort(buf, strlen(buf), schetchik,&time);
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25983 / 17424 / 6910
Регистрация: 22.10.2011
Сообщений: 30,668
Записей в блоге: 6
16.09.2013, 23:38 #3
Можешь даже не пробовать, теперь будет обратная ошибка: не могу сконвертировать whar_t* в char*... Кто же в strlen передает wchar_t*? Для юникодных строк есть wcslen...
0
D_Kovsh
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 4
16.09.2013, 23:43  [ТС] #4
все-равно ошибки.. и в других строках

C++
1
2
3
4
5
sprintf(bb,"Время посылки, мксек: %d",time);
Label8->Caption=bb;
 
sprintf(bb,"Скорость записи: %d Кб/сек",(int)(8*strlen(buf)*schetchik*1000/time));
Label4->Caption=bb;
[bcc32 Error] D2xx.cpp(87): E2034 Cannot convert 'wchar_t[4096]' to 'const char *'
[bcc32 Error] D2xx.cpp(87): E2342 Type mismatch in parameter '__s' (wanted 'const char *', got 'wchar_t *')
[bcc32 Error] D2xx.cpp(89): E2034 Cannot convert 'wchar_t[30]' to 'char *'
[bcc32 Error] D2xx.cpp(89): E2342 Type mismatch in parameter '__buffer' (wanted 'char *', got 'wchar_t *')
[bcc32 Error] D2xx.cpp(92): E2034 Cannot convert 'wchar_t[4096]' to 'const char *'
[bcc32 Error] D2xx.cpp(92): E2342 Type mismatch in parameter '__s' (wanted 'const char *', got 'wchar_t *')
0
Tarik20
21 / 22 / 5
Регистрация: 14.02.2013
Сообщений: 243
16.09.2013, 23:56 #5
Цитата Сообщение от D_Kovsh Посмотреть сообщение
все-равно ошибки.. и в других строках

C++
1
2
3
4
5
sprintf(bb,"Время посылки, мксек: %d",time);
Label8->Caption=bb;
 
sprintf(bb,"Скорость записи: %d Кб/сек",(int)(8*strlen(buf)*schetchik*1000/time));
Label4->Caption=bb;
[bcc32 Error] D2xx.cpp(87): E2034 Cannot convert 'wchar_t[4096]' to 'const char *'
[bcc32 Error] D2xx.cpp(87): E2342 Type mismatch in parameter '__s' (wanted 'const char *', got 'wchar_t *')
[bcc32 Error] D2xx.cpp(89): E2034 Cannot convert 'wchar_t[30]' to 'char *'
[bcc32 Error] D2xx.cpp(89): E2342 Type mismatch in parameter '__buffer' (wanted 'char *', got 'wchar_t *')
[bcc32 Error] D2xx.cpp(92): E2034 Cannot convert 'wchar_t[4096]' to 'const char *'
[bcc32 Error] D2xx.cpp(92): E2342 Type mismatch in parameter '__s' (wanted 'const char *', got 'wchar_t *')
Замени sprintf на wsprintf
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25983 / 17424 / 6910
Регистрация: 22.10.2011
Сообщений: 30,668
Записей в блоге: 6
16.09.2013, 23:58 #6
Опять же, для Юникода - sprintf заменяется на swprintf:
C++
1
2
swprintf(bb, L"Время посылки, мксек: %d", time);
Label8->Caption=bb;
, т так далее... Насчет strlen я уже сказал выше...
0
D_Kovsh
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 4
17.09.2013, 00:38  [ТС] #7
спасибо..но ошибки остались..
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25983 / 17424 / 6910
Регистрация: 22.10.2011
Сообщений: 30,668
Записей в блоге: 6
17.09.2013, 02:24 #8
Ты бы не выкладывал код "в час по чайной ложке", а показал бы полностью весь метод, было бы проще исправить...
0
D_Kovsh
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 4
17.09.2013, 03:05  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void __fastcall TForm1::Button1Click(TObject *Sender)//нажата кнопка ПОСЛАТЬ
{
char buf[4096];
char bb[30];
 
int proverka=0, schetchik=1;
long time;
 
Memo1->GetTextBuf(buf, 4096);
if (Memo1->GetTextLen())
{
if (Form1->CheckBox1->Checked==true)
        schetchik=NumCicle;
 
proverka=WritePort(buf, strlen(buf), schetchik, &time);    // запись в порт
 
sprintf(bb,"Время посылки, мксек: %d",time);
Label8->Caption=bb;
 
sprintf(bb,"Скорость записи: %d Кб/сек",(int)(8*strlen(buf)*schetchik*1000/time));
Label4->Caption=bb;
 
if (!proverka)
        MessageBox(0,"Ошибка при записи в порт","Error",MB_OK|MB_ICONERROR);
}
}[/INDENT][/INDENT]

заменяю, как Вы говорите, те же самые ошибки все-равно выдает
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25983 / 17424 / 6910
Регистрация: 22.10.2011
Сообщений: 30,668
Записей в блоге: 6
17.09.2013, 11:14 #10
Цитата Сообщение от D_Kovsh Посмотреть сообщение
те же самые ошибки все-равно выдает
Не вижу:

ошибка "Cannot convert 'char' to 'wchar_t *' "


Где ошибки? Нет никаких ошибок...

Я уж не говорю о том, что GetTextBuf оставлена только для совместимости с 16-битным кодом (у тебя же Юникодный проект, судя по ошибкам, какие на фиг 16 бит?), и вместо нее рекомендовано использовать свойство Text.
0
17.09.2013, 11:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2013, 11:14

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

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

Cannot convert 'wchar_t *' to 'const char *'
Этот код работает в старом приложении а в новом не хочет... void...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru