Главная страница
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.052 c
1-1108003250
vidiv
2005-02-10 05:40
2005.02.27
Защита программы от копирования.


1-1108065519
Наташа
2005-02-10 22:58
2005.02.27
Ввод в Edit справа


1-1108024952
VladRaven
2005-02-10 11:42
2005.02.27
RxDBLookupList как програмно установить (выделить синим).


1-1108201079
Kostik___
2005-02-12 12:37
2005.02.27
Генератор случ чисел


1-1108315380
Kolan
2005-02-13 20:23
2005.02.27
Как положить контролы на PageControl