procedure CopyDirectoryTree

本文介绍了一个使用 Delphi 实现的文件夹复制函数 procedureCopyDirectoryTree。该函数通过 SHFileOperation 接口完成从源目录到目标目录的文件及文件夹复制操作,并能够处理文件名冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

procedure  CopyDirectoryTree(AHandle:  THandle;  const  AFromDirectory,  AToDirectory:  String);
var
 SHFileOpStruct:  TSHFileOpStruct;
 FromDir:  PChar;
 ToDir:  PChar;
begin

 GetMem(FromDir,  Length(AFromDirectory)+2);
 try
     GetMem(ToDir,  Length(AToDirectory)+2);  
     try  
 
         FillChar(FromDir^,  Length(AFromDirectory)+2,  0);  
         FillChar(ToDir^,  Length(AToDirectory)+2,  0);
 
         StrCopy(FromDir,  PChar(AFromDirectory));  
         StrCopy(ToDir,  PChar(AToDirectory));  
 
         with  SHFileOpStruct  do  
         begin
             Wnd        :=  AHandle;      //  Assign  the  window  handle  
             wFunc    :=  FO_COPY;    //  Specify  a  file  copy  
             pFrom    :=  FromDir;  
             pTo        :=  ToDir;  
             fFlags  :=  FOF_NOCONFIRMATION  or  FOF_RENAMEONCOLLISION;  
             fAnyOperationsAborted  :=  False;  
             hNameMappings  :=  nil;
             lpszProgressTitle  :=  nil;  
             if  SHFileOperation(SHFileOpStruct)  <>  0  then  
                 RaiseLastWin32Error;  
         end;  
     finally  
         FreeMem(ToDir,  Length(AToDirectory)+2);  
     end;
 finally  
     FreeMem(FromDir,  Length(AFromDirectory)+2);  
 end;  
end;

转载于:https://www.cnblogs.com/haiou327/archive/2010/11/23/1885775.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值