C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: ошибка CopyFile в C++ Builder 2010  (Прочитано 3774 раз)
Ree4
Участник


Сказали спасибо: +12/-5
Offline

Сообщений: 353


« : 03 Январь 2013, 22:48:34 »

пишу вот такой код:
Код:
CopyFile(Application->ExeName.c_str(), (Win + "\\prog.exe").c_str(), true);
При компиляции ошибка:
Цитировать
[BCC32 Error] Unit1.cpp(29): E2034 Cannot convert 'wchar_t *' to 'const char *'
  Full parser context
    Unit1.cpp(24): parsing: void _fastcall TForm1::FormCreate(TObject *)
[BCC32 Error] Unit1.cpp(29): E2342 Type mismatch in parameter 'lpExistingFileName' (wanted 'const char *', got 'wchar_t *')
  Full parser context
    Unit1.cpp(24): parsing: void _fastcall TForm1::FormCreate(TObject *)
Незнаю как исправить, пробовал и w_str(); - толку нет.

Тестил на C++ Builder 6, всё работает и компилится на ура.

Что изменить нужно?
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #1 : 03 Январь 2013, 23:22:27 »

Ммммм, мне кажется надо L перед текстом приписать. Точнее не скажу, но перебором минут за 5 эта проблемка решается
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


« Ответ #2 : 04 Январь 2013, 03:16:57 »

Не надо ничего гадать: t_str() не просто так придумали, в зависимости от выбранной кодировки (ANSI/Unicode) будет нужный результат. С макросом _T, описанным в tchar.h - то же самое:
Код
::CopyFile(Application->ExeName.t_str(), (Win + _T("\\prog.exe")).t_str(), true);
Записан
Ree4
Участник


Сказали спасибо: +12/-5
Offline

Сообщений: 353


« Ответ #3 : 04 Январь 2013, 20:01:55 »

помогло только

Код
::CopyFile(Application->ExeName.t_str(), (Win + _T("\\rpog.exe")).c_str(), true);


Спасибо за ответы
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.088 секунд. Запросов: 21.