uses
ShellApi;
function CopyDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos dobegin
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 dobegin
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 dobegin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
end;
procedure TForm1.Button1Click(Sender: TObject);
beginif cCopyDir('d:\download', 'e:\') = Truethen
ShowMessage('Directory copied.');
end;
Приведенный код на Delphi предназначен для копирования, перемещения и удаления директорий с помощью Windows Shell API. Вот подробное описание функций:
CopyDir: Копирует директорию из одной локации в другую.
Использует функцию ShFileOperation для выполнения операции копирования.
Флаг FO_ COPY указывает, что это операция копирования.
Флаг FOF_ FILESONLY указывает, что только файлы в исходной директории должны быть скопированы, а не поддиректории.
Параметры pFrom и pTo指定ают исходную и целевую директории.
MoveDir: Перемещает директорию из одной локации в другую.
Использует функцию ShFileOperation для выполнения операции перемещения.
Флаг FO_ MOVE указывает, что это операция перемещения.
Флаг FOF_ FILESONLY указывает, что только файлы в исходной директории должны быть перемещены, а не поддиректории.
Параметры pFrom и pTo指定ают исходную и целевую директории.
DelDir: Удаляет пустую директорию.
Использует функцию ShFileOperation для выполнения операции удаления.
Флаг FO_ DELETE указывает, что это операция удаления.
Флаг FOF_ SILENT указывает, что не должна отображаться подтверждение перед удалением.
Флаг FOF_ NOCONFIRMATION обеспечивает, что не будет отображаться диалог "Вы уверены?".
Параметр pFrom specifies the directory to be deleted.
Button1Click: Процедура, вызываемая при клике кнопки на форме. Она вызывает функцию CopyDir с параметрами исходной и целевой директорий, а также отображает сообщение, если операция копирования была успешна.
Обратите внимание, что это код не обрабатывает ошибки или исключения должным образом. Например, он не проверяет, существует ли исходная директория перед попыткой ее копирования или перемещения. Кроме того, он предполагает, что целевая директория пустая и готова к использованию. В реальном приложении вы бы хотели добавить более robust ошибку обработки и валидации.
В статье описываются функции для копирования, перемещения и удаления целых директорий на языке Pascal с использованием API Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.