Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Создание директории |
Автор: VSB 17.7.2010, 12:21 | ||
Написал функцию для создания вложенных директорий, но не уверен, что правильно. Посмотрите, пожалуйста
|
Автор: 586 17.7.2010, 12:28 |
А ведь такая функция есть... http://msdn.microsoft.com/en-us/library/bb762130%28VS.85%29.aspx |
Автор: VSB 17.7.2010, 12:34 | ||||
Я знаю, но во первых
И ещё
Так что не подходит. Нужна поддержка длинных путей (#define MY_MAX_PATH 32768 //REAL NTFS MAX_PATH) и работоспособность на всех NT 5.0+ |
Автор: boostcoder 17.7.2010, 12:40 | ||
как-то муторно у вас получилось.. есть http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/reference.html#Convenience-functions если уж очень хочется поизвращаться, то как-то так:
|
Автор: VSB 17.7.2010, 12:51 |
НУ, мне нужна поддержку длинных путей (начало вида \\?\c:\...) и вход через wchar_t* |
Автор: boostcoder 17.7.2010, 12:52 | ||
и? Добавлено через 55 секунд а что это означает? |
Автор: VSB 17.7.2010, 13:05 |
>а что это означает? http://msdn.microsoft.com/en-us/library/aa365247(v=VS.85).aspx#maxpath Этот префикс (\\?\) при вызове к уникодным версиям некоторых функций (например, http://msdn.microsoft.com/en-us/library/aa363855(VS.85).aspx) обойти ограничение MAX_PATH в 260 символов |
Автор: boostcoder 17.7.2010, 13:14 |
в приведенном мною примере, никаких ограничений быть не может. разве что, ограничение на объем памяти ![]() |
Автор: boostcoder 17.7.2010, 13:47 | ||
дак замени std::string на std::wstring CreateDirectoryW() как я понял из описания CreateDirectoryA(), для поддержки длинных путей, нужно всего лишь сделать префикс "\\?\" в таком случае, функция приобретает вид:
проверил на длине пути 4096. работает. |
Автор: VSB 17.7.2010, 19:17 |
И тем не менее, я ничего не знаю про boost, итераторы и не шарю в шаблонах, так что когда разберусь - может и запользую. А пока, просто скажите, правильно ли я написал? |
Автор: boostcoder 17.7.2010, 20:06 | ||
и нафига я тут распинался? ![]() все равно спасибо. |
Автор: VSB 18.7.2010, 01:10 |
Ну извините, что так получилось. Просто если я сейчас начну разбираться с boost и шаблонами, то не закончу этот плагин (для которого функция) в обозримом будущем. А нужно. Но всё равно спасибо. ========= По функции интересует, не будет ли тут ошибок по логике (и ошибок вообще) и будет ли в результате GetLastError() соответствовать таковому от последнего вызова к CreateDirectoryW? |