Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
14 / 12 / 2
Регистрация: 05.11.2014
Сообщений: 84
1

Процедура для копирования папок

20.05.2010, 20:28. Показов 1290. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем здешним программистам. Обращаюсь к вам со следующим вопросом: хотел написать программу, копирующую заданные папки в выбранное пользователем место. Для копирования хотел использовать функцию CopyFile(). Как я над ней не извращался, копировать она не хотела. Пошарился по вашему форуму и увидел, что негоже хлопцам ее для папок использовать. Но теперь возник вопрос: как мне скопировать папку?

Поюзал поиск, нашел вот это: https://www.cyberforum.ru/delp... #post95328, цитирую:
Цитата Сообщение от BanDit Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.sButton1Click(Sender: TObject);
  var
  OpStruc: TSHFileOpStruct;
  frombuf, tobuf: array [0..128] of Char;
x,y:string;
begin
x:=''//откуда;
y:=''//куды;
   FillChar( frombuf, Sizeof(frombuf), 0 );
  FillChar( tobuf, Sizeof(tobuf), 0 );
  StrPCopy( frombuf, x );
  StrPCopy( tobuf, y);
  with OpStruc do
  begin
    Wnd:= Handle;
    wFunc:= FO_COPY;
    pFrom:= @frombuf;
    pTo:=@tobuf;
    fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
    fAnyOperationsAborted:= False;
    hNameMappings:= nil;
    lpszProgressTitle:= nil;
  end;
  ShFileOperation( OpStruc );
 
end;
Есть ещё способ


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 function TForm1.GetWinDir: PAnsiChar;
var
  Buffer: array[0..1023] of Char;
begin
  GetWindowsDirectory(Buffer, Sizeof(Buffer) - 1);
  Result:=Buffer;
end;
procedure TForm1.sButton1Click(Sender: TObject);
 
   var
  i:integer;
  S: TFileStream;
  SDir, Buff, Buff2: String;
  Dbl: Boolean;
begin
  if not DirectoryExists('C:\'//путь к папке) then
    CreateDirectory(PChar('C:\'), nil);
 
  
    Archive1.Extract('C:\'+Archive1.Names.Strings[i],i);
 
  end;
  SDir:='C:\';
  Dbl:=False;
  for i:=0 to Length(SDir)-1 do
    if (Sdir[i] = '\') and (not Dbl) then
    begin
      Buff2:=Copy(SDir,i,Length(SDir));
      SetLength(SDir,i);
      SDir:=Sdir+Buff2;
      Dbl:=True;
end;
(подправил исходное сообщение, одна процедура была дважды описана)
Можете пояснить, каким образом работают примеры? И есть ли более простые способы скопировать папку в Делфи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2010, 20:28
Ответы с готовыми решениями:

Самый надежный метод (процедура) копирования
Доброго времени суток! Подскажите надежную процедуру копирования файлов. Хочу написать...

Процедура копирования данных между объектами одного класса
Здравствуйте. Помогите, пожалуйста, разобраться с организацией процедуры копирования всех данных из...

Макрос для копирования имен папок
помогите написать макрос с помощью которого можно будет скопировать имена папок в Excell приетом...

Написать bat и задать два файла(1-для копирования. Во 2м находится список папок куда нужно скопировать первый файл)
Доброго времени суток. Помогите пожалуйста с задачей. Нужно написать bat, который будет...

0
20.05.2010, 20:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2010, 20:28
Помогаю со студенческими работами здесь

Удаление папок и файлов после их копирования
Доброго времени суток, уважаемые форумчане. Имеется такой скрипт. Как внедрить в него очистку...

Лог копирования папок с русскими именами
надо скопировать несколько файлов и занести эти операции в протокол. При записи в протокол если...

Запрет копирования файлов и папок на локальный компьютер
Добрый день гуру..) Вопрос как бы простой, с одной стороны (в видео мельком затрагивали), только...

Перенос файлов и папок без копирования RT-AC68U
Здравствуйте всем! Пользуюсь встроенным Download Master на роутере RT-AC68U, все скаченные файлы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru