Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы
Старый 15.08.2007, 08:40   #1
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию Проверка существования директории

Добрый день.
Существует ли что-нибудь подобное FileExists для директорий?
Gorin вне форума
Старый 15.08.2007, 08:50   #2
Орк
Новичок
Джуниор
 
Регистрация: 15.08.2007
Сообщений: 1
По умолчанию

if DirectoryExists(dirName)
then ShowMessage(dirName+' существует')
else ShowMessage(dirName+' не существует');

Орк вне форума
Старый 15.08.2007, 10:33   #3
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 16,413
По умолчанию

http://www.delphibasics.ru/DirectoryExists.php
Alar вне форума
Старый 24.11.2007, 22:02   #4
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

У меня вопрос посложнее. Как проверить есть ли определённая подпапка в папке? если нет, то создать её.
Например так c:\1\2\3\
Сначала нужно проверить есть ли папка 1, если нет - то создать и потом проверить есть ли папка 2 и создать если нет, и т.д.
Как такое сделать?
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума
Старый 24.11.2007, 22:58   #5
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 16,413
По умолчанию

Вот довольно просто, если каталог есть, то он не будет создан, этот исходник должен вывести код ошибки.
Цитата:
procedure TForm1.Button1Click(Sender: TObject);
//Пример кода : Создание каталога
var
error : Integer;

begin
// Попытка создать новый подкаталог в текущем каталоге
// Выключение проверки ошибок I/O
{$IOChecks off}
MkDir('C://1/2');

// Создание каталого прошло успешно?
error := IOResult;
if error = 0
then ShowMessage('Каталог создался успешно')
else ShowMessageFmt('Создание каталога провалилось с ошибкой %d',[error]);

{$IOChecks on}
end;
Alar вне форума
Старый 25.11.2007, 15:45   #6
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Видимо я не совсем правильно объяснил суть.
if DirectoryExists('c:\1\2\3\')
Папки 1 может и не быть! Как создать её а в ней создать папку 2 и папке 2 папку 3 ? Также может быть папка 2, но папки 3 может не быть! Надо как-то по очереди проверить существование каждой папки!

Вот это:
if DirectoryExists(''c:\1\2\')=false then
CreateDir(''c:\1\2\');
не работает так как нужно если нет папки 1. Мне нужно чтоб в этом случае создавалась папка 1, а в ней папка 2.

Alar, этот код тоже работает как надо если есть папка 1, а если нет - папки не создаёт.
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума
Старый 25.11.2007, 18:36   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Элементарней просто нет. И кстати есть еще и функция в SysUtils ( вроде ) ForceDirectories. Читайте статьи например DelphiWorld. Именно из-за не охоты самому найти решение задачи и появляются подобные вопросы. И Вы пишете название темы "Существ. папки". А потом в ходе дела оказывается что Вам надо создать путь директории. Вы определитесь сразу.

алгоритм сразу на быструю руку:

var
i: integer;
path: string;
curpath: string;
begin
for i:= 1 to length(path) do
begin
if path[i] = '\' then
begin
curpath := copy(path, 1, i);
if {not or true} directoryexists(curpath) then ; // !!!
// createdirectory(pchar(curpath), NIL); // api WinNT
end;
end;
end;

вроде так...

Последний раз редактировалось BOBAH13; 25.11.2007 в 18:40.
BOBAH13 вне форума
Старый 25.11.2007, 19:47   #8
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

BOBAH13, огромное спасибо! Всё оказалось просто: ForceDirectories('C:\1\2\3'); и всё как надо!

Всем кто пытался помочь спасибо!

Немного почистил. Тема закрыта //zetrix
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.

Последний раз редактировалось zetrix; 25.11.2007 в 19:53.
CoDeR вне форума
Закрытая тема
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор директории Kashp Общие вопросы Delphi 6 06.05.2009 05:29
Проверка существования TEdit John_chek Общие вопросы Delphi 9 18.04.2008 13:56
отправка директории kommunist Работа с сетью в Delphi 2 19.01.2008 17:24
Проверка наличия директории SANIOK_AV Общие вопросы Delphi 2 16.01.2008 11:05
проверка существования окна Shade Win Api 3 22.07.2007 16:56


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS