Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как проверить, возможно ли создать определенную папку? [D7, XP]


Страницы:   1 2

Yegorchic ©   (2006-09-24 00:34:00) 

Сабж
Т.е. хотелось бы что-то типа CanDirCreate(Dir: string): boolean;

:-)


Anatoly Podgoretsky   (2006-09-24 20:16:00) [1]

Без создания папки это узнать нельзя.


Ketmar   (2006-09-24 20:13:00) [2]

>[19] Virgo_Style(c) 24-Sep-2006, 20:10
>как насчет проверить DriveType на DRIVE_CDROM ?)
а если это XP и сидюк пишущий? %-)


Virgo_Style   (2006-09-24 20:10:00) [3]

как насчет проверить DriveType на DRIVE_CDROM ?)


guav   (2006-09-24 17:30:00) [4]

если на диске прорезь защиты от записи запрещает запись, то права не помогут.


SergP   (2006-09-24 07:01:00) [5]

ИМХО:
1. Проверить или есть права на создание директории.
2. Проверить или имя создаваемой директории корректное (не содержит всяких там запрещенных символов.
3. Проверить наличие одноименной директории или файла.
4. Сделать выводы.


Yegorchic   (2006-09-24 01:45:00) [6]

default ©   (24.09.06 01:42) [15]
Да не, мне уже надо просто узнать, правильно ли у меня всё в функции моей продумано...

Ну ладно, спокойной ночи :-)


default   (2006-09-24 01:42:00) [7]

Yegorchic ©   (24.09.06 01:41) [14]
я ушёл спать
сформулируй в связи с чем задача такая возникла
днём ответят, я думаю, что-нибудь дельное


Yegorchic   (2006-09-24 01:41:00) [8]

Не, мне всё-таки надо просто проверить правильность путя :-|

Права это наверное будет "другая история", так сказать...

А где эта GetTempDirectory находится? Или я что-то не так понял.. :-\


default   (2006-09-24 01:32:00) [9]

Yegorchic ©   (24.09.06 01:27) [12]
потерпеть неудачу при создании директории можно не только потому, что путь неуникальный или неправильный, а и потому, например, что прав нет соответствующих

для гарантированного создания директории юзай GetTempDirectory


Yegorchic   (2006-09-24 01:27:00) [10]

Ой, наверное лучше было бы так :-)

function CanDirCreate(Dir: string): Boolean;
var
i: integer;
begin
result:=true;
If GetDriveType(PCHAR(ExtractFileDrive(Dir))) = 1 then
 begin
   Result:=false;
   exit;
 end;
Dir:=Copy(Dir, 3, Length(Dir));
If (Pos(':', Dir) <> 0) or (Pos('/', Dir) <> 0) or
 (Pos('|', Dir) <> 0) or (Pos('<', Dir) <> 0) or
 (Pos('>', Dir) <> 0) or (Pos('?', Dir) <> 0) or
 (Pos('*', Dir) <> 0) then
   Result:=false;
end;


Yegorchic   (2006-09-24 01:25:00) [11]

Вот. Что-то больно мало получилось.
Посмотрите, правильно или что-то ещё нужно?

function CanDirCreate(Dir: string): Boolean;
var
 i: integer;
begin
result:=true;
If GetDriveType(PCHAR(ExtractFileDrive(Dir))) = 1 then
 Result:=false;
Dir:=Copy(Dir, 3, Length(Dir));
If (Pos(':', Dir) <> 0) or (Pos('/', Dir) <> 0) or
  (Pos('|', Dir) <> 0) or (Pos('<', Dir) <> 0) or
  (Pos('>', Dir) <> 0) or (Pos('?', Dir) <> 0) or
  (Pos('*', Dir) <> 0) then Result:=false;
end;


Вроде потестил - нормално работает...


Yegorchic   (2006-09-24 01:02:00) [12]

default ©   (24.09.06 01:00) [8]
О, хотя да, это можно... там же не так уж и много условий то будет...
Так и попробую сделать, если уж встроенного ничего нету.


default   (2006-09-24 01:01:00) [13]

Yegorchic ©   (24.09.06 00:34)  
если тебе нужна возможность создавать гарантировано вспомогательыне директори есть функция GetTempDirectory или что-то подобное


default   (2006-09-24 01:00:00) [14]

Yegorchic ©   (24.09.06 00:59) [6]
изучи ситуации при которой директорию нельзя создать


default   (2006-09-24 00:59:00) [15]


> может если директория с определёнными правами открывается
> в случае её наличия, то её можно и удалить

это не читать, ибо не то запостил


Yegorchic   (2006-09-24 00:59:00) [16]

Просто тогда придется очень часто и много создавать/удалять.


default   (2006-09-24 00:57:00) [17]

Yegorchic ©   (24.09.06 00:54) [4]
по-моему стандартного API для этого нет
вот проверить директорию на существование это да
а вот на создание, с правами надо смотреть
может если директория с определёнными правами открывается в случае её наличия, то её можно и удалить
но быстрей сделать с удалением да и не париться


Yegorchic   (2006-09-24 00:54:00) [18]

Но это же не очень хорошо :-)


default   (2006-09-24 00:52:00) [19]

Yegorchic ©   (24.09.06 00:49) [2]
можно потом удалить


Yegorchic   (2006-09-24 00:49:00) [20]

>default ©   (24.09.06 00:46) [1]

Но тогда в удачном случае создастся папка-то. А мне этого не надо. Надо просто проверить, можно такую папку создать вообще, или нет...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо