Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание папки!!! WinApi или ShellApi или ещё как.. 
:(
    Опции темы
Гость_h2o
Дата 19.10.2005, 11:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Столкнулся с такой проблемой:
Когда идёт код проги, выполняющийся последовательно, и в этом коде идёт:
Код

...
создание папки;
копирование файла в эту папку;
...

если использовать MkDir() то это лажа получается... она не создаёт папки с путём типа - "c:\111\222\333\444\555\". Нужно сначало 111 создать, потом в ней 222, потом в 111\222\ создать 333 и т.д.
Но + её в том что она быстро это делает и при дальнеёшем копировании папка уже доступна!
это неподходит...
есть ещё 2 функции, которые я не понимаю чем различаются (только вызовом???) - CreateDirectory(handle, 'c:\111\222\333\444\555', Flag);
и CreateDir('c:\111\222\333\444\555'); Ими можно создавать папки с каким угодно большим путём... вот только 2 минуса: они обе задают глупый вопрос типа - "Папки нет... Создать?". и 2й минус - если идёт код типа
Код

...
создание папки;
копирование файла в эту папку;
...

то при "копирование файла в эту папку;" папка ещё не существует... и в итоге выдаётся исключение или ошибка!

Собственно сабж:
Как в коде типа:
Код

...
создание папки;
копирование файла в эту папку;
...

создать папку с каким либо угодно по длинне путём ('c:\111\222\333\444\555'), так, чобы не задавался вопрос "Папки нет... Создать?" и эта папка сразу была доступна для копирования туда файлов???

smile
  Вверх
Girder
Дата 19.10.2005, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



К примеру:

1:
Код
procedure TForm1.Button1Click(Sender: TObject);
begin
 ForceDirectories('e:\10\12\20\30');
end;


2:
Код
procedure TForm1.Button2Click(Sender: TObject);
procedure ForceDir(const path:string);
begin
 if (trim(path)='')or(path[Length(path)]=':') then exit;
 if path[Length(path)]<>'\' then ForceDir(extractFilePath(path)) else ForceDir(extractFilePath(copy(path,1,Length(Path)-1)));
 CreateDirectory(PChar(path),nil);
end;
begin
 ForceDir('e:\10\12\20\30\');
end;



--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
h2o
Дата 19.10.2005, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: 1
Всего: 1



Girder поясни что есть что если не влом! а то мне мало что сказало тобой написанное!

1 и 2 - это оба примера. т.е. можно хоть так хоть так?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
h2o
Дата 19.10.2005, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: 1
Всего: 1



Girder
Код

if (trim(path)=' ')or(path[Length(path)]=':') then exit; 

это - если путь пустой или в конце ":" (типа сsmile, то выходим! так?

Код

if path[Length(path)]<>'\' then ForceDir(extractFilePath(path)) else ForceDir(extractFilePath(copy(path,1,Length(Path)-1)));

а это что? и как тут что вставлять???

Код

CreateDirectory(PChar(path),nil);

этим создаём директорию. nil - не выводить сообщение (вопрос типа создавать). да?


Код

ForceDir('e:\10\12\20\30\');

и этим создаём директорию??? или как?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Girder
Дата 19.10.2005, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Енто два разных примера. И тот и другой создаст(если сможет конечно) тебе много вложенных папок за раз и ни чего не будет тебя спрашивать.

Цитата(h2o @ 19.10.2005, 15:48)
этим создаём директорию. nil - не выводить сообщение (вопрос типа создавать). да?
нет smile

Цитата(h2o @ 19.10.2005, 15:48)
а это что? и как тут что вставлять???
Получаем следующею наименование папки... точнее полный путь с название

Цитата(h2o @ 19.10.2005, 15:48)
это - если путь пустой или в конце ":" (типа с, то выходим! так?
Типо того...

PS: Ты их запустил бы... что ли... smile

Это сообщение отредактировал(а) Girder - 19.10.2005, 15:07


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Alex
Дата 20.10.2005, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.