Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование директории [D6, WinXP]


aglar ©   (2005-01-11 20:06:00) 

Как скопировать директорию со всеми вложенными файлами и подкаталогами? Или как получить список всех файлов в каталоге в TStringList?


Fay   (2005-01-17 12:06:00) [1]

2 aglar   (13.01.05 19:34) [4]
Я имел ввиду, что рекурсия прекрасно разбирается в цикл. Во всяком случае прямая рекурсия.


aglar   (2005-01-17 10:00:00) [2]

Всем спасибо!


aglar   (2005-01-17 10:00:00) [3]

Всем спасибо!


vlad_ri   (2005-01-14 17:40:00) [4]

Ещё вариантик:


function TForm1.CopyFolder(Owner: integer; Source,Destination: string; RenameOnCollision,Confirm: boolean): boolean;
const Aborted: Boolean = False;
var ShFileStructure: TSHFileOpStruct;
begin
 While pos(';',Source)>0 do
   Source[pos(';',Source)]:=#0;
 While pos(';',Destination)>0 do
   Destination[pos(';',Destination)]:=#0;
 Source:=Source+#0#0;
 Destination:=Destination+#0#0;

 ShFileStructure.Wnd := Owner;
 ShFileStructure.wFunc := FO_Copy;
 ShFileStructure.pFrom := PChar(Source);
 ShFileStructure.pTo := PChar(Destination);
 ShFileStructure.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMMKDIR;
 if RenameOnCollision then
   ShFileStructure.fFlags := ShFileStructure.fFlags or FOF_RENAMEONCOLLISION;
 if not Confirm then
   ShFileStructure.fFlags := ShFileStructure.fFlags or FOF_NOCONFIRMATION;
 ShFileStructure.fAnyOperationsAborted := Aborted;
 ShFileStructure.hNameMappings := nil;
 ShFileStructure.lpszProgressTitle := nil;

 result:=(SHFileOperation(ShFileStructure)=0) and (not Aborted);
end;


Вариант   (2005-01-14 17:28:00) [5]

Вот на счёт копирования папки со всем вложенными фалами:
unit FilesOp;

interface

uses Forms, SysUtils, ShellAPI, Dialogs;

procedure CopyFiles(const FromFolder: string; const ToFolder: string);

implementation

procedure CopyFiles(const FromFolder: string; const ToFolder: string);
var
 Fo      : TSHFileOpStruct;
 buffer  : array[0..4096] of char;
 p       : pchar;
begin
 FillChar(Buffer, sizeof(Buffer), #0);
 p := @buffer;
 StrECopy(p, PChar(FromFolder)); //директория, которую мы хотим скопировать
 FillChar(Fo, sizeof(Fo), #0);
 Fo.Wnd    := Application.Handle;
 Fo.wFunc  := FO_COPY;
 Fo.pFrom  := @Buffer;
 Fo.pTo    := PChar(ToFolder); //куда будет скопирована директория
 Fo.fFlags := 0;
 if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
   ShowMessage('File copy process cancelled')
end;

end.

А вот по поводу списка файлов в каталоге:

procedure ListFileDir(Path: string; FileList: TStrings);
var
  SR: TSearchRec;
begin
  if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) then
      begin
        FileList.Add(SR.Name);
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
//Использовать можно так
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListFileDir('C:\WINDOWS\', ListBox1.Items);
end;


aglar   (2005-01-13 19:34:00) [6]

2 Fay (c)

мы тебя внимательно слушаем ;)


Fay   (2005-01-12 13:13:00) [7]

2 maxz ©   (11.01.05 21:52) [1]
Ничего подобного.


begin...end   (2005-01-11 22:29:00) [8]

> aglar   (11.01.05 20:06)

> Как скопировать директорию со всеми вложенными файлами и
> подкаталогами?

См. в справке описание API-функции SHFileOperation.


maxz   (2005-01-11 21:52:00) [9]

рекурсия, товарищ, только рекурсия....


Наверх

Титульная страница Поиск, карта сайта Написать письмо