|
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 13
|
||||||
Конкатенация в WinAPI06.01.2016, 01:34. Показов 7853. Ответов 14
Здравствуйте, подскажите пожалуйста, изучаю WinAPI, и в процессе возник вопрос:
Как сделать конкатенацию для LPCTSTR? В одном переводе одной статьи сказано, что не рекомендуется подключать TCHAR.H вместе с windows.h, но как тогда сделать конкатенацию в зависимости от типа кодировки приложения?
И почему тогда работает макрос TEXT(), разве он не в TCHAR объявлен?
0
|
||||||
| 06.01.2016, 01:34 | |
|
Ответы с готовыми решениями:
14
Конкатенация строк в WinAPI WinApi C++. Конкатенация рядов символов lstrcat
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||||||
| 06.01.2016, 08:54 | |||||||
|
LPCTSTR - не полноценная строка (таких в Си/WinAPI просто нет), а только указатель на символьный массив. Во-первых, этот массив не умеет расширяться (места под дополнительные символы просто нет). Во-вторых, в вашем случае он с высокой степенью вероятности попадет в R/O память.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 13
|
|
| 06.01.2016, 10:42 [ТС] | |
|
Я правильно понял, что TCHAR подключается где-то в windows.h?
Если я создам строку TCHAR, то разве у меня не произойдет конфликт типа TCHAR с требуемым в MessageBox LPCTSTR? (Пусть в итоге это один и тот же wchar_t, но предупреждение вылезает) Добавлено через 24 минуты UPD: Почему то StringCchCat не определен. Так-же по всей видимости TCHAR.H не включен в windows.h
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||
| 06.01.2016, 11:11 | ||||
|
1
|
||||
|
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 13
|
|||||||||||
| 06.01.2016, 13:08 [ТС] | |||||||||||
|
1) Возвращаемый StringCchCat HRESULT не нравится messagebox'у (Аргумент типа LPCTSTR несовместим с параметром типа STRSAFE_LPWSTR)
+ 2) Первый аргумент StringCchCat ему не нравится (Аргумент типа HRESULT несовместим с параметром типа LPCWSTR) + Не подключал TCHAR.H потому что кое где (в статье на хабре) было сказано, что его не стоит подключать вместе с windows.h
Если поменять LPCTSTR на LPTSTR, одна из ошибок пропадает (вторая) UPD: Раз уж, как вы говорите, все таки можно подключать TCHAR.H вместе с windows.h, то по факту проблема отпадает:
UPD2: Тогда возникает другая проблема Кликните здесь для просмотра всего текста
1>------ Сборка начата: проект: Win32Project1, Конфигурация: Debug Win32 ------ 1> Source.cpp 1>d:\!projects\c++\mvs\winapi\win32proje ct1\source.cpp(13): error C4996: 'wcscat': This function or variable may be unsafe. Consider using wcscat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecr t_wstring.h(101): note: см. объявление "wcscat" ========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
|
|||||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||||
| 06.01.2016, 14:19 | ||||||||
Сообщение было отмечено ftvkyo2011 как решение
Решение
1
|
||||||||
|
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 13
|
|||||||
| 06.01.2016, 14:33 [ТС] | |||||||
|
Благодарю, ваш код помог, не дотупил, что конкатенацию можно вынести и за MessageBox.
Сам когда сейчас пытался, тупо сделал #define _CRT_SECURE_NO_WARNINGS Но теперь все работает. Кликните здесь для просмотра всего текста
0
|
|||||||
|
8 / 8 / 5
Регистрация: 28.10.2012
Сообщений: 135
|
||||||
| 07.07.2016, 11:01 | ||||||
|
Ну да, это пипец, товарищи. Чтобы просто сложить 2 строки нужно знать про все эти типы и инклюды
а потом написать вот такое:
0
|
||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 07.07.2016, 11:20 | ||
|
Давно уже существуют фреймворки оборачивающие все это в красивый код на плюсах. Ну а если приспичило делать на голом WinAPI - придется есть кактус.
0
|
||
|
8 / 8 / 5
Регистрация: 28.10.2012
Сообщений: 135
|
||||||||||||
| 07.07.2016, 11:26 | ||||||||||||
|
Еще почему-то так не переводит:
Renji,
0
|
||||||||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 07.07.2016, 11:30 | |
|
0
|
|
|
8 / 8 / 5
Регистрация: 28.10.2012
Сообщений: 135
|
||||||
| 07.07.2016, 15:03 | ||||||
|
Не могу понять, что не так передаю в StringCchCat:
она должна принимать тип LPTSTR (он же *TCHAR?) первым параметром выходит ошибка - нарушение прав доступа для записи по памяти (25 строка).
0
|
||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 07.07.2016, 15:30 | |||
|
1
|
|||
|
8 / 8 / 5
Регистрация: 28.10.2012
Сообщений: 135
|
||
| 10.07.2016, 22:01 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 25.05.2017
Сообщений: 1
|
|
| 26.05.2017, 19:45 | |
|
Я покорнейше прошу прощения, но удалось ли победить данную проблему? Также пытаюсь сложить две строки TCHAR и тоже херня выходит!
0
|
|
| 26.05.2017, 19:45 | |
|
Помогаю со студенческими работами здесь
15
Конкатенация Конкатенация конкатенация Конкатенация в С++ Конкатенация Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|