Вниз
Скачать: 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.028 c
2-1158931301
jjj
2006-09-22 17:21
2006.10.08
Как очистить все ячейки в ValueListEditor?


3-1154672476
Progr_Neud
2006-08-04 10:21
2006.10.08
Параметры в ADO: q2: Parameter i not found


1-1156346723
trackbar
2006-08-23 19:25
2006.10.08
TrackBar и рамка фокуса


4-1148562019
Elen
2006-05-25 17:00
2006.10.08
Это опять я со своим надоедливым вопросом перехвата функций API


15-1158657530
PHPDeveloper
2006-09-19 13:18
2006.10.08
issh.exe




   Наверх