Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Как проверить, возможно ли создать определенную папку?   Найти похожие ветки 

 
Yegorchic ©   (2006-09-24 00:34) [0]

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

:-)


 
default ©   (2006-09-24 00:46) [1]

CreateDirectory


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

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

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


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

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


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

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


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

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


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

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


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


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

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


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

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


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

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


 
Yegorchic ©   (2006-09-24 01:02) [10]

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


 
Yegorchic ©   (2006-09-24 01:25) [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:27) [12]

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

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;


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

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

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


 
Yegorchic ©   (2006-09-24 01:41) [14]

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

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

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


 
default ©   (2006-09-24 01:42) [15]

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


 
Yegorchic ©   (2006-09-24 01:45) [16]

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

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


 
SergP ©   (2006-09-24 07:01) [17]

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


 
guav ©   (2006-09-24 17:30) [18]

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


 
Virgo_Style ©   (2006-09-24 20:10) [19]

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


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

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


 
Anatoly Podgoretsky ©   (2006-09-24 20:16) [21]

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



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.048 c
15-1158474454
ramor
2006-09-17 10:27
2006.10.08
Модуль программиста в Delphi


2-1158444935
Not
2006-09-17 02:15
2006.10.08
Как сделать систему dll-плагинов работающих на Си и Дельфи ?


2-1158737384
kyn66
2006-09-20 11:29
2006.10.08
Глюк с SetRange?


1-1156399893
Handle
2006-08-24 10:11
2006.10.08
Расширения файлов


15-1158482845
Chuk &amp; Gek
2006-09-17 12:47
2006.10.08
подключение к Internet чере мобильник