Главная страница
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.047 c
1-1156780556
J o i n t
2006-08-28 19:55
2006.10.08
Rave Report, выборка данных


1-1156494191
Still Swamp
2006-08-25 12:23
2006.10.08
Работаю в экселе. Не могу записать в ячейгу значение.


3-1154815736
lexander
2006-08-06 02:08
2006.10.08
ADO + агрегирование (access)


2-1158672632
RomanH
2006-09-19 17:30
2006.10.08
Директории-> поддиректории


2-1158843472
arhis
2006-09-21 16:57
2006.10.08
Как узнать количество знаков после запятой?