Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2013, 11:57   #1
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию Не создается папка. CreateFolder() = False

Есть условный адрес: "C:\1\newfolder\1.txt". Нужно создать папку newfolder, взяв за основу этот адрес(ее будущее нахождение). "Режу" до такого вида "C:\1\newfolder" и CreateFolder перестает работать. В чем может быть проблема?

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop

//---------------------------------------------------------------------------
#pragma argsused

void NewFolder(LPSTR sPath);
char sPath[MAX_PATH]= "C:\\1\\newfolder";

int main(int argc, char* argv[])
{
        NewFolder(sPath);
        return 0;
}
//---------------------------------------------------------------------------

void NewFolder(LPSTR sPath)
{
strcat(sPath,"\\");
sPath[strlen(sPath)-strlen(strrchr(sPath,'\\'))]='\0';  //после вот этих плясок
if (CreateDirectory(sPath,NULL))     //"балалайка"
printf("true\n"); 
system("PAUSE");
}
Добавлю:
1. Директория "C:\1" существует. Проверять ее на наличие не нужно.
2. Папка newfolder не существует. По этой причине False выскочить не может.
Baburek вне форума Ответить с цитированием
Старый 25.06.2013, 12:17   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Посмотрите что возвращает GetLastError() после CreateDirectory()

Кстати, зачем нужны эти пляски?
waleri вне форума Ответить с цитированием
Старый 25.06.2013, 12:32   #3
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Излечил при помощи strcpy(). Работает:
Код:
void NewFolder(LPSTR sPath)
{
strcat(sPath,"\\");
printf("%s\n",sPath);
sPath[strlen(sPath)-strlen(strrchr(sPath,'\\'))]='\0';

char mypath[MAX_PATH];
strcpy(mypath, sPath);
printf("%s\n",mypath);
if (CreateDirectory(mypath,NULL))
printf("true\n");
system("PAUSE");
}

Цитата:
Сообщение от waleri Посмотреть сообщение
Посмотрите что возвращает GetLastError() после CreateDirectory()

Кстати, зачем нужны эти пляски?
Предположить, что в директории должен лежать файл. Если File not exist, то нужно проверяю есть ли папка вообще. То, что я привел - это именно конкретный момент который не получался Т.е. выделить папку из просматриваемого адреса, а потом создать
Baburek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При создании страницы в FrontPage создается папка с картинками, а в DreamWeaver - нет Michael_Ardan HTML и CSS 5 28.12.2012 16:16
Задачи на true и false Bekzat Помощь студентам 1 06.12.2011 18:20
Application.ScreenUpdating = False Ципихович Эндрю Microsoft Office Word 3 25.02.2011 17:11
Интерпретатор FALSE Granus Софт 2 13.08.2010 11:37
False,True Jony Wocker Общие вопросы C/C++ 2 06.02.2010 00:42