Как можно скопировать файлы с помощью стандартных средств?
Как можно скопировать файлы с помощью стандартных средств?
Как можно скопировать файлы с помощью стандартных средств? Для этого есть специальная функция ShFileOperation. procedure TForm1.Copy1Click(Sender: TObject); var FSrc,FDes,FPath: string; begin FDes := ??; if not SelectDirectory(?Select Directory?, ??, FDes) then exit; FSrc:=DirectoryPath +#0; DoSHFileOp(Handle, FileOpMode[0], FSrc, FDes, true); end; DirectoryPath - указывает на директорию, которую надо скопировать. Функция DoSHFileOp выглядит так: function TForm1.DoSHFileOp(Handle: THandle; OpMode: UInt; Src, Dest: string; DelRicleBin: Boolean): Boolean; var Ret: integer; ipFileOp: TSHFileOpStruct; begin Screen.Cursor:=crAppStart; FillChar(ipFileOp, SizeOf(ipFileOp), 0); with ipFileOp do begin wnd := Handle; wFunc := OpMode; pFrom := pChar(Src); pTo := pChar(Dest); if DelRicleBin then fFlags := FOF_ALLOWUNDO else fFlags := FOF_NOCONFIRMMKDIR; fAnyOperationsAborted := False; hNameMappings := nil; lpszProgressTitle := ??; end; try Ret := SHFileOperation(ipFileOp); except Ret := 1; end; result := (Ret = 0); Screen.Cursor:=crDefault; end; FileOpMode - константа, которая выглядит как: const FileOpMode: array[0..3] of UInt =(FO_COPY, FO_DELETE, FO_MOVE, FO_RENAME); Объявлять эту константу надо перед implementation. Например: var Form1: TForm1; const FileOpMode: array[0..3] of UInt =(FO_COPY, FO_DELETE, FO_MOVE, FO_RENAME); implementation {$R *.DFM} С помощью этой функции можно копировать удалять директории вместе с подкаталогами. Только не забудьте подключить в раздел USES модуль ShellApi.