Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.026 c
3-1154592652
snip13
2006-08-03 12:10
2006.10.08
Как правильно отобразить изменения в таблице


15-1158667458
dgim
2006-09-19 16:04
2006.10.08
Файлы....


1-1156420386
gear
2006-08-24 15:53
2006.10.08
Как скрыть кнопку на панели задач у вторичной формы, если для ней


15-1158435187
Real
2006-09-16 23:33
2006.10.08
Какой каталогизатор посоветуете?


15-1158600999
Весь в делах
2006-09-18 21:36
2006.10.08
Фашисты опять лезут власть




   Наверх