Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.064 c
15-1158060195
Real
2006-09-12 15:23
2006.10.08
Реален ли CMP - Crimea Mastak Party?


2-1158855597
NickCoder
2006-09-21 20:19
2006.10.08
Hook


15-1158176108
Ne-Lud
2006-09-13 23:35
2006.10.08
ACM олимпиады. Какова от них польза?


5-1140527217
De
2006-02-21 16:06
2006.10.08
Куда и как разместить свою иконку для создаваемого компонента?


1-1156488798
stone
2006-08-25 10:53
2006.10.08
Service





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский