Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Копирование директории   Найти похожие ветки 

 
aglar   (2005-01-11 20:06) [0]

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


 
maxz ©   (2005-01-11 21:52) [1]

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


 
begin...end ©   (2005-01-11 22:29) [2]

> aglar   (11.01.05 20:06)

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

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


 
Fay ©   (2005-01-12 13:13) [3]

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


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

2 Fay (c)

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


 
Вариант ©   (2005-01-14 17:28) [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;


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

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


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;


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

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


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

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


 
Fay ©   (2005-01-17 12:06) [9]

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



Страницы: 1 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
1-1107863839
Chip
2005-02-08 14:57
2005.02.27
Не пересекаются ли созданные Panel??????


1-1108108934
kull
2005-02-11 11:02
2005.02.27
Время ожидания действий пользователя


14-1103997412
Piter
2004-12-25 20:56
2005.02.27
Оцените статью про прокси серверы


3-1106766390
HATAB
2005-01-26 22:06
2005.02.27
Поиск в БД


3-1106726495
Yeg
2005-01-26 11:01
2005.02.27
Полное удаление