怎样把一个文件侠下的所有文件复制到别一个文件夹下(15分)

  • 主题发起人 主题发起人 huaweinet
  • 开始时间 开始时间
winexecute(copy)

shellexecute
 
使用SHFileOperation;
没调试过,自己调试一下吧.

uses shellapi
function CopyDir(FromDir:String;ToDir:String):Boolean;
Var
FO:TSHFileOpStruct;
begin
result:=false;
if ((FromDir='') or (ToDir='')) then exit;
With FO do Begin
Wnd:=0;
wFunc:=FO_Copy;
pFrom:=Pchar(FromDir);
pTo:=PChar(ToDir);
fFlags:=FOF_NOCONFIRMATION;
hNameMappings:=nil;
lpszProgressTitle:=PChar('正在复制文件夹'+FromDir+'到'+ToDir);
fAnyOperationsAborted:=False;
End;
if SHFileOperation(FO)=0 then result:=true;

end;


例子:
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyDir('d:/yy','d:/bb')
end;
 
也就是目录拷贝
FillChar(FromBuf,SizeOf(FromBuf),0);
FillChar(ToBuf,SizeOf(ToBuf),0);
StrPCopy(FromBuf,PChar(FileName+'/data'));
StrPCopy(ToBuf,PChar(distin1));
with OpStruc do
begin
Wnd := Handle;
wFunc := FO_COPY;
pFrom := @FromBuf;
pTo := @ToBuf;
fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation(OpStruc);
 
这只要使用一个shfileoperation()函数就搞定,下面程序运行通过,给分吧
var
path:string;
opstruc:tshfileopstruct;
frombuf,tobuf:array[0..128] of char;


begin
path:=getexepath;
path:=filepath+'data/*.*';
fillchar(frombuf,sizeof(frombuf),0);
fillchar(tobuf,sizeof(tobuf),0);

strpcopy(frombuf,filepath);
strpcopy(tobuf,pchar(directorylistbox1.Directory));
with opstruc do begin
wnd:=handle;
wfunc:=fo_copy;
pfrom:=@frombuf;
pto:=@tobuf;
fflags:=fof_noconfirmation or fof_renameoncollision;
fanyoperationsaborted:=false;
hnamemappings:=nil;
lpszprogresstitle:=nil;
end;
if shfileoperation(opstruc)=0 then
messagedlg('文件备份成功!',mtinformation,[mbok],0)
else
showmessage('备份失败!请于我联系');
close;
end;
 
后退
顶部