Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программное создание каталога с файлом

263
25 апреля 2007 года
koltaviy
816 / / 16.12.2004
Разработка:
C++Builder 6.0

Использование:
MS Windows 95 и старше.

Код:
Код:
..
ofstream file_wr;
 
AnsiString dirPath = ExtractFilePath(Application->ExeName) + this->user_name;
ForceDirectories(dirPath);
 
AnsiString fName = dirPath + "\\MyFile.txt";
 
file_wr.open(fName.c_str());
 
for (int i = 0; i < 10; i++)
{
AnsiString str = IntToStr(i + 1) + "\n";
file_wr.write( str.c_str(), str.Length() );
}
file_wr.close();
..


Проблема:
Программа используется на различных компах, с разными ОС, разными политиками безопасности и т.д..
Приведенный код не на всех компах создает папку и помещает в нее файл(1 из 15 в среднем - пока). На некоторых компах он просто ничо не делает - и не ругается и не создает каталог с файлом.

Вопрос:
- С чем может быть связано.
- Как можно избежать такой ситуации.
1
25 апреля 2007 года
kot_
7.3K / / 20.01.2000
Ну чтобы сказать более конкретно необходимо более полная инфо - например на какой конкретно ОС это происходит.
Наиболее вероятная причина - размер строки dirPath больше значения MAXPATH для данной ОС или же в пути содержатся недопустимые символы. Или отсуствуют необходимые разрешения для юзера. Или хз :)
Выход достаточно простой - проверять что директория создана:
 
Код:
...
if(!ForceDirectories(dirPath)){
//Обрабатываем ошибку
}
263
25 апреля 2007 года
koltaviy
816 / / 16.12.2004
Цитата: kot_

..
Наиболее вероятная причина - размер строки dirPath больше значения MAXPATH для данной ОС или же в пути содержатся недопустимые символы.
..


Оба варианта - вряд ли, т.к. прогу пробывали кинуть на системный диск в корень. И недопустимым символам тоже неоткуда браться получается!!

Цитата: kot_

..
Или отсуствуют необходимые разрешения для юзера.
..


Вот это наиболее вероятный вариант, но:
1) Запись на диск разрешена - пробовали тупым созданием файла на диске(да и прогу как-то же на него скинули).
2) Компы находятся не в сети, но все-таки существует администратор. И политику прав я думаю он задает одинаковую на все компы. На этом компе не создается папка, а на рядом стоящем - создается :(
Да и какие права могут привести к такому поведению..

Цитата: kot_

..
Или хз :)
..


Тоже очень вероятный вариант ;)

Цитата: kot_

..
Выход достаточно простой - проверять что директория создана:
 
Код:
...
if(!ForceDirectories(dirPath)){
//Обрабатываем ошибку
}


Так а чо делать-то, если папка не создана? Она имеет решающую роль в работе программы, а точнее в результате работы программы!

1
25 апреля 2007 года
kot_
7.3K / / 20.01.2000
Попробовать вызвать команду повторно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог