Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Скопировать, удалить, переместить всю директорию

Delphi , Файловая система , Директории

Скопировать, удалить, переместить всю директорию


uses 
  ShellApi; 

function CopyDir(const fromDir, toDir: string): Boolean; 
var 
  fos: TSHFileOpStruct; 
begin 
  ZeroMemory(@fos, SizeOf(fos)); 
  with fos do 
  begin 
    wFunc  := FO_COPY; 
    fFlags := FOF_FILESONLY; 
    pFrom  := PChar(fromDir + #0); 
    pTo    := PChar(toDir) 
  end; 
  Result := (0 = ShFileOperation(fos)); 
end; 


function MoveDir(const fromDir, toDir: string): Boolean; 
var 
  fos: TSHFileOpStruct; 
begin 
  ZeroMemory(@fos, SizeOf(fos)); 
  with fos do 
  begin 
    wFunc  := FO_MOVE; 
    fFlags := FOF_FILESONLY; 
    pFrom  := PChar(fromDir + #0); 
    pTo    := PChar(toDir) 
  end; 
  Result := (0 = ShFileOperation(fos)); 
end; 

function DelDir(dir: string): Boolean; 
var 
  fos: TSHFileOpStruct; 
begin 
  ZeroMemory(@fos, SizeOf(fos)); 
  with fos do 
  begin 
    wFunc  := FO_DELETE; 
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION; 
    pFrom  := PChar(dir + #0); 
  end; 
  Result := (0 = ShFileOperation(fos)); 
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if cCopyDir('d:\download', 'e:\') = True then 
    ShowMessage('Directory copied.'); 
end;

Приведенный код на Delphi предназначен для копирования, перемещения и удаления директорий с помощью Windows Shell API. Вот подробное описание функций:

  1. CopyDir: Копирует директорию из одной локации в другую.

    • Использует функцию ShFileOperation для выполнения операции копирования.
    • Флаг FO_ COPY указывает, что это операция копирования.
    • Флаг FOF_ FILESONLY указывает, что только файлы в исходной директории должны быть скопированы, а не поддиректории.
    • Параметры pFrom и pTo指定ают исходную и целевую директории.
  2. MoveDir: Перемещает директорию из одной локации в другую.

    • Использует функцию ShFileOperation для выполнения операции перемещения.
    • Флаг FO_ MOVE указывает, что это операция перемещения.
    • Флаг FOF_ FILESONLY указывает, что только файлы в исходной директории должны быть перемещены, а не поддиректории.
    • Параметры pFrom и pTo指定ают исходную и целевую директории.
  3. DelDir: Удаляет пустую директорию.

    • Использует функцию ShFileOperation для выполнения операции удаления.
    • Флаг FO_ DELETE указывает, что это операция удаления.
    • Флаг FOF_ SILENT указывает, что не должна отображаться подтверждение перед удалением.
    • Флаг FOF_ NOCONFIRMATION обеспечивает, что не будет отображаться диалог "Вы уверены?".
    • Параметр pFrom specifies the directory to be deleted.
  4. Button1Click: Процедура, вызываемая при клике кнопки на форме. Она вызывает функцию CopyDir с параметрами исходной и целевой директорий, а также отображает сообщение, если операция копирования была успешна.

Обратите внимание, что это код не обрабатывает ошибки или исключения должным образом. Например, он не проверяет, существует ли исходная директория перед попыткой ее копирования или перемещения. Кроме того, он предполагает, что целевая директория пустая и готова к использованию. В реальном приложении вы бы хотели добавить более robust ошибку обработки и валидации.

В статье описываются функции для копирования, перемещения и удаления целых директорий на языке Pascal с использованием API Windows.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Директории ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-19 01:05:34/0.0031659603118896/0