Форум: "Начинающим";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];
ВнизКак проверить, возможно ли создать определенную папку? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.035 c