Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260

Как работать с PathCombine ?

31.07.2017, 01:41. Показов 1715. Ответов 14

Студворк — интернет-сервис помощи студентам
Не могу совместить 2 пути

C++
1
2
#include <windows.h>
#include <Shlwapi.h>
Допустим у меня есть папка Temp

C++
1
2
TCHAR myPath[MAX_PATH];
GetTempPath(MAX_PATH, myPath);
И я хочу дать название папки, которую нужно создать в папке Temp

C++
1
const std::string fname = "MyDirectory"; // Если правильно
Дальше функция для создание папки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BOOL DirectoryExists(LPCTSTR szPath)
{
    DWORD dwAttrib = GetFileAttributes(szPath);
 
    return (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}
void createDirectoryRecursively(std::wstring path)
{
    unsigned int pos = 0;
    do
    {
        pos = path.find_first_of(L"\\/", pos + 1);
        CreateDirectory(path.substr(0, pos).c_str(), NULL);
    } while (pos != std::string::npos);
}
Проверяю существование папки и если нету создаём:
C++
1
2
3
std::wstring directory = PathCombine(NULL, myPath, fname); // ошибка в fname: 
if (DirectoryExists(directory.c_str()) == FALSE)
createDirectoryRecursively(directory);
Ошибка fname такая:

не существует подходящей функции преобразования из "const std::string" в "LPCWSTR"
P.S: Как объединить 2 пути ?

Добавлено через 15 минут
Главная проблема
C++
1
std::wstring directory = PathCombine(NULL, myPath, fname); // ошибка в fname:
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2017, 01:41
Ответы с готовыми решениями:

может ли купленная мною GTX460 работать к примеру не как должна работать GTX460 а как видюха по хуже?
Ребята, помогите пожалуйста в таком вопросе! Взял видеокарту Gainward GTX460 1Gb GS, так как я не давно за компом и всех вещей не знаю,...

Как может сервер-сайд код работать или не работать на конкретном компе?
Всем привет! Вот такая проблема. Есть сайт, все работает ок, но - один из компов имеющий Win98 и IE6.0 and service pack 1 работает очень...

Как работать с указателями и как работать с ссылками
Я в книге дочитал до темы указатели и ссылки, не понимаю как работать с указателями и как работать с ссылками. Я прочитал понятия я понимаю...

14
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
31.07.2017, 05:47
может использовать это wstring fname = "MyDirectory";
0
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
31.07.2017, 09:00  [ТС]
Цитата Сообщение от Antikl Посмотреть сообщение
может использовать это wstring fname = "MyDirectory";
Пробовал, не проходит.
0
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
31.07.2017, 09:08
C++
1
2
const std::wstring fname = L"MyDirectory";
std::wstring directory = PathCombine(NULL, myPath, fname.c_str());
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,649
Записей в блоге: 6
31.07.2017, 09:09
Цитата Сообщение от chaleureux Посмотреть сообщение
не существует подходящей функции преобразования из "const std::string" в "LPCWSTR"
LPCWSTR - указатель на константную строку широких символов.
C++
1
const std::wstring fname = L"MyDirectory";
C++
1
std::wstring directory = PathCombine(NULL, myPath, fname.c_str());
0
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
31.07.2017, 09:19  [ТС]
Ilot, Попробовал изменить на PathCombineW выводит те же самые ошибки.
Миниатюры
Как работать с PathCombine ?  
0
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
31.07.2017, 09:23
chaleureux, а так ?
C++
1
#include "Shlwapi.h"
0
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
31.07.2017, 09:28  [ТС]
Цитата Сообщение от RunningMan Посмотреть сообщение
а так ?
Он у меня и так подключен =)
0
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
31.07.2017, 09:30
у вас угловые скобки
Цитата Сообщение от chaleureux Посмотреть сообщение
#include <Shlwapi.h>
0
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
31.07.2017, 09:31  [ТС]
Цитата Сообщение от RunningMan Посмотреть сообщение
у вас угловые скобки
Сообщение от chaleureux
#include <Shlwapi.h>
Да я тоже заметил, решил исправить на Ваш пример, выводит то же самое
0
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
31.07.2017, 09:36  [ТС]
Странная у меня студия, немножко долго думает ).
Переименовал как Вы сказали, добавил PathCombineW - Результат на скриншоте:
Миниатюры
Как работать с PathCombine ?  
0
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
31.07.2017, 09:36
Можно же и так строки сложить
C++
1
std::wstring directory = std::wstring(myPath) + fname;
Только результат смотрите сами что выходит.
1
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
31.07.2017, 09:40  [ТС]
RunningMan, Так работает, но почему PathCombineне хочет принимать?
0
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
31.07.2017, 09:41
Цитата Сообщение от chaleureux Посмотреть сообщение
PathCombineне хочет принимать
мне непонятно, потому что УМВР
0
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
31.07.2017, 21:06  [ТС]
Цитата Сообщение от RunningMan Посмотреть сообщение
мне непонятно, потому что УМВР
ХМ, очень странно =)

Добавлено через 11 часов 7 минут
Проблему решил через TEXT
C++
1
std::wstring directory = PathCombine(NULL,myPath, TEXT("MyDirectory"));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2017, 21:06
Помогаю со студенческими работами здесь

[WPF] Как динамически создавать графические элементы и как с ними работать?
Здравствуйте! Я не очень понимаю как динамически в C# создавать графические элементы и как с ними работать. Статически задать в XAML...

Как при пользовании COM - объектов работать с типом обявленым как SafeArray?
Как при пользовании COM - объектов работать с типом обявленым как SafeArray?

Как работать со Стилями CSS? Как определить где сам HTML?
Дали подредактировать готовый сайт на 1С битрикс. Проблема в том что я привык работать с DW и N++ напрямую с html/css/js кодом. ...

Что выгоднее работать как ООО или как физ.лицо
При подаче на модерацию в Я.директ - нужно было ввести свое ИНН - у меня его не оказалось - пришлось забивать мою фирму(ООО). Есть ли...

Как javascript-ий unescape заставить работать так же как и perl ?
есть страничка со следующим фрагментом: &lt;SCRIPT LANGUAGE='JavaScript'&gt; var content = '%80%81%82%83%84'; content =...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru