Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 15:45   #1
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию Как скопировать папку с вложенными файлами в делфи

Мне нужна функция резервного копирования. При нажатии на кнопку открывается диалог выбора папки. А затем в эту папку коипровались все файлы, которые находятся в папке data. Подскажите, как это можно сделать?

Заранее спасибо.
FACE OFF вне форума Ответить с цитированием
Старый 09.12.2010, 15:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Искать примеры типа этого: http://www.delphiworld.narod.ru/base..._move_dir.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2010, 16:41   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
uses ShellApi
....
procedure TForm1.Button1Click(Sender: TObject);
var CF:TSHFileOpStruct;
begin
 CF.Wnd:=0;
 CF.pFrom:='D:\P-CAD\PDFники\*.*';//откуда копируем файлы для вас будет ваша папка
 CF.pTo:='D:\PDFники';//куда копируем если такого каталога нет то будет предложено его создать
 CF.wFunc:=FO_COPY;//задаём флаг копирования
 CF.fFlags:=FOF_ALLOWUNDO;//пусть будет этот флаг
 if ShFileOperation(CF) = 0 then showmessage('Скопировано');
end;
ну диалог выбора папки думаю добавите сами
SERG1980 вне форума Ответить с цитированием
Старый 09.12.2010, 17:15   #4
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
Код:
uses ShellApi
....
procedure TForm1.Button1Click(Sender: TObject);
var CF:TSHFileOpStruct;
begin
 CF.Wnd:=0;
 CF.pFrom:='D:\P-CAD\PDFники\*.*';//откуда копируем файлы для вас будет ваша папка
 CF.pTo:='D:\PDFники';//куда копируем если такого каталога нет то будет предложено его создать
 CF.wFunc:=FO_COPY;//задаём флаг копирования
 CF.fFlags:=FOF_ALLOWUNDO;//пусть будет этот флаг
 if ShFileOperation(CF) = 0 then showmessage('Скопировано');
end;
ну диалог выбора папки думаю добавите сами
Вставил, работает. Но только если путь куда копировать записан в виде '...'.
А Если пишу вот так:
Код:
CF.pTo:=DirDialog1.DirPath;
(естественно предварительно выбрав категорию) ; То выдает ошибку и пишет: Incompatible types: 'String' and 'PAnsiChar'

А чем ошибка?
FACE OFF вне форума Ответить с цитированием
Старый 09.12.2010, 17:37   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
CF.pTo:=PChar(DirDialog1.DirPath);
SERG1980 вне форума Ответить с цитированием
Старый 09.12.2010, 17:41   #6
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию

Спасибо огромное.
FACE OFF вне форума Ответить с цитированием
Старый 09.12.2010, 18:09   #7
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию

Еще один вопрос.а как сделать так, что бы при копировании эти файлы заменяли собой более старые?
FACE OFF вне форума Ответить с цитированием
Старый 09.12.2010, 20:04   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Надо у структуры сменить вот этот флаг
Код:
CF.fFlags:=FOF_NOCONFIRMATION;

Последний раз редактировалось SERG1980; 10.12.2010 в 08:17.
SERG1980 вне форума Ответить с цитированием
Старый 20.05.2013, 07:32   #9
AHBAR
Пользователь
 
Регистрация: 23.11.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
Код:
uses ShellApi
....
procedure TForm1.Button1Click(Sender: TObject);
var CF:TSHFileOpStruct;
begin
 CF.Wnd:=0;
 CF.pFrom:='D:\P-CAD\PDFники\*.*';//откуда копируем файлы для вас будет ваша папка
 CF.pTo:='D:\PDFники';//куда копируем если такого каталога нет то будет предложено его создать
 CF.wFunc:=FO_COPY;//задаём флаг копирования
 CF.fFlags:=FOF_ALLOWUNDO;//пусть будет этот флаг
 if ShFileOperation(CF) = 0 then showmessage('Скопировано');
end;
ну диалог выбора папки думаю добавите сами
А если нужно чтоб не спрашивали меня о создании папки, а если выходная папка не существует, то создавалась автоматически. как это реализовать?
AHBAR вне форума Ответить с цитированием
Старый 20.05.2013, 08:02   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
CF.fFlags:=FOF_ALLOWUNDO+FOF_NOCONFIRMATION;//пусть будет этот флаг
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами и строками в Делфи 7 Николай ПН Помощь студентам 1 22.04.2010 16:18
Отправить по e-mail папку с файлами Titan123 Работа с сетью в Delphi 4 22.12.2008 19:42
Как копировать папку с подпапками и файлами tarakan1983 Помощь студентам 6 16.10.2008 03:16
скопировать папку со всем её содержимым Tech07 Общие вопросы Delphi 8 02.12.2007 12:06
Как скопировать папку со всем ее содержимым Arsgun Общие вопросы Delphi 2 09.06.2007 22:07