|
1 / 1 / 0
Регистрация: 16.07.2009
Сообщений: 36
|
||||||
Невозможно преобразовать параметр из 'const char [7]' в 'LPCTSTR'16.07.2009, 08:54. Показов 22820. Ответов 13
Метки нет (Все метки)
Здравствуйте!
Я совсем недавно начал изучать С++. По большей степени ничего пока не знаю , но очень хочется как можно быстрее изучить хотя бы не совсем сложное. ![]() Установив Visual Studio 2008 (русскую версию), я попробовал написать свою первую программу. Знакомые мне дали видео учебник по С++, и я при написании строго придерживался его. Причем, обшибки возникли сразу (на первом уроке учебника). В видео уроках не происходило никаких ошибок, а у меня в программе - постоянно. Я пробовал на нескольких компьютерах - такая же история.Говоря конкретнее, я хотел написать для начала MFC - приложение на базе диалоговых окон, которое бы при нажатие на соответствующую кнопку выдавало сообщение "Привет". Пожалуйста, не думайте обо мне, как о полном ламере, потому что я совсем недавно стал изучать этот язык программирования, а над этой проблеммой думаю уже недели две.Итак, вот мой код:
1>Компиляция... 1>HeiDlg.cpp 1>i:\_temp\new\hei\hei\heidlg.cpp(155) : error C2664: CWnd::MessageBoxW: невозможно преобразовать параметр 1 из 'const char [7]' в 'LPCTSTR' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции" В этом случае выдавалось при исполнении программы окошко, но кнопка "Привет" не функционировала.
0
|
||||||
| 16.07.2009, 08:54 | |
|
Ответы с готовыми решениями:
13
Ошибка 1 error C2664: CFileFind::FindFile: невозможно преобразовать параметр 1 из 'const char [7]' в 'LPCTSTR' Невозможно преобразовать параметр 1 из 'const char [3]' в 'const wchar_t * Невозможно преобразовать параметр 2 из 'char' в 'const char * |
|
1 / 1 / 0
Регистрация: 16.07.2009
Сообщений: 36
|
|
| 16.07.2009, 10:12 [ТС] | |
|
При его компиляции у меня на разных машинах возникали 2 рода ошибок.
1 ошибка: компиляция завершалась с ошибками. Выдавалось сообщение: 1>Компиляция... 1>HeiDlg.cpp 1>i:\_temp\new\hei\hei\heidlg.cpp(155) : error C2664: CWnd::MessageBoxW: невозможно преобразовать параметр 1 из 'const char [7]' в 'LPCTSTR' 1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции" В этом случае выдавалось при исполнении программы окошко, но кнопка "Привет" не функционировала. 2 ошибка: (см. вложенный скриншот) Кнопки "Привет" вообще на окошке не было.
1
|
|
|
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
|
|
| 16.07.2009, 10:25 | |
Сообщение было отмечено maximus2107 как решение
Решение
3
|
|
|
1 / 1 / 0
Регистрация: 16.07.2009
Сообщений: 36
|
|
| 16.07.2009, 10:45 [ТС] | |
|
Спасибо!
И тогда вот какой вопрос: это, получается, новая спецификация в 2008 визуал студии? Так как в учебнике рассматривалась 2005 версия, там этого не было? То есть, такое в каждом теперь выводимом сообщении должно быть?
0
|
|
|
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
|
|||
| 16.07.2009, 11:43 | |||
|
1
|
|||
|
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
|
|
| 16.07.2009, 13:31 | |
|
L"Privet" - wide-char строка
Не хочеш писать L - Project-properties-general-character set: use multi-byte character set.
2
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|||||||
| 16.07.2009, 13:39 | |||||||
|
Ну как видишь
Для этого на будущее приводи типы в ручную при помощи
или double a=1.777; int b = (int)a; В общем идея ясна. Ну а для удобства сделали такие спецификатор как тебе сказали "L - Long).
2
|
|||||||
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 16.07.2009, 14:11 | ||
|
1
|
||
|
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
|
|
| 16.07.2009, 14:28 | |
|
ISergey, а какой смысл его использовать если он заменяется на __T(x), а потом это заменяется на L ## x
1
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 17.07.2009, 15:26 | |
|
Ну это дело вкуса. Когда я сижу через 6 все нормально, а вот когда сажусь за 2005 начинается веселье)) Я еще не привык к ихним модификациям и вечно натыкаюсь на преобразование типов или еще что.
Не знаю у меня всегда ругается на тип char <=> LPCSTR или какой-либо из этого семейства.
0
|
|
|
Любитель давать советы
342 / 135 / 14
Регистрация: 12.01.2009
Сообщений: 511
|
|||||||
| 17.07.2009, 16:19 | |||||||
![]() Дело не в буквочке L, за которую Вы уцепились, а в буквочке T, которую Вы настолько не заметили, что благополучно потеряли. Так, как написали Вы, не прокатит, ибо: LPCSTR - это и есть const char * - всегда А вот LPCTSTR - это может быть const char *, а может быть и const wchar_t * - в зависимости от настроек проекта. Точно так же, в зависимости от тех же настроек, MessageBox преобразуется к MessageBoxA для обычных строк либо к MessageBoxW для строк "юникодовых" (о названиях - тут тема для отдельного разговора). И уж совершенно разные вещи строки "Привет" и L"Привет", и никакими преобразованиями типа одно в другое не переведешь, разве что специальными функциями типа mbstowcs. Зато можно использовать макрос _T, который генерит тип строки, соответствующий все тем же настройкам проекта. Поэтому правильным будет один из трех вариантов:
0
|
|||||||
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 17.07.2009, 18:50 | |
|
Провтыкал T
0
|
|
| 17.07.2009, 18:50 | |
|
Помогаю со студенческими работами здесь
14
WinAPI - Невозможно преобразовать параметр из 'const char [26]' в 'LPCWSTR' GetModuleHandle: невозможно преобразовать параметр 1 из 'const char [8]' в 'LPCWSTR' Error c2440: невозможно преобразовать 'const char [2]' в 'char' error C2440: =: невозможно преобразовать 'const char *' в 'char *' Cannot convert parameter 1 from 'const char [48]' to 'LPCTSTR' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|
|
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub
Примеры вызова:
# Указанная валюта 'EUR'
floatrates-rub -Code 'EUR'
# Список имеющихся кодов валют
floatrates-rub -Available
function floatrates-rub {
|
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5
Примеры вызова
Get-WeatherRP5rss
с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
|
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr
Примеры вызова:
Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
|
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют
function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) {
$url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js'
$data = Invoke-RestMethod -Uri $url
$esc = 27
. . .
|
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений
Всем привет. А вот мой компьютер, переделанный из ноутбука.
Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
|