@Notice_n

Как оставить изначальное название папки при копировании?

При выполнении процедуры копирования папки переименовывается скопированная папка по типу "название + путь". Как сделать так, чтобы при копировании название папки оставалось таким же?
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 := FOF_NOCONFIRMATION;
  if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
    ShowMessage('File copy process cancelled')
end;

procedure Form.BitBtn1Click(Sender: TObject);
begin
CopyFiles((Edit1.Text),(Edit3.Text));
ShowMessage('Папка успешно скопирована!');
end;
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
С помощью компонента ShellFoldersBrowse (список внизу) находите папку-источник и папку получатель. К последней добавляете ExtractFileName от источника. Копировать с помощью System.IOUtils.TDirectory.Copy.
DELPHI+ShellFoldersBrowse. Если ничего не устроит, могу положить сюда свой вариант.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы