uses ShellAPI;procedure TForm1.Button1Click(Sender: TObject); var FileOp:SHFILEOPSTRUCT; begin FileOp.Wnd:=0; FileOp.wFunc:=FO_COPY; //删除就用FO_DELETE,移动是FO_MOVE FileOp.pFrom:='c:\*.*'; //这里改成TListView里的文件 FileOp.pTo:='c:\temp\'; FileOp.fFlags:=FOF_ALLOWUNDO; SHFileOperation(FileOp); end;
二楼的方法是拷贝文件夹,调用API,下面的函数可以实现拷贝文件时实时计算进度然后显示在进度条上,效果和速度可能不如直接用API,仅供参考procedure TForm1.CopyFileWithProgressBar(Source, Destination: string); var FromF, ToF: file of byte; Buffer: array[0..4096] of char; NumRead: integer; FileLength: longint;begin AssignFile(FromF, Source); reset(FromF); AssignFile(ToF, Destination); rewrite(ToF); FileLength := FileSize(FromF); with ProgressBar1 do begin Min := 0; Max := FileLength; while FileLength > 0 do begin BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead); FileLength := FileLength - NumRead; BlockWrite(ToF, Buffer[0], NumRead); Position := Position + NumRead; end; CloseFile(FromF); CloseFile(ToF); end; end;
to liangqingzhi(老之) FileOp.pFrom:='c:\*.*'; //这里改成TListView里的文件 我试了一下,如果包含中文则会失败
没用过NT,不清楚。 不过楼主可以改用SHFileOperationW。 var var FileOp:SHFILEOPSTRUCTW; begin ...... SHFileOperationW(FileOp); end; 其中pFrom,pTo是PWideChar的,支持中文,在Xp下可以正常复制。
var FileOp:SHFILEOPSTRUCT;
begin
FileOp.Wnd:=0;
FileOp.wFunc:=FO_COPY; //删除就用FO_DELETE,移动是FO_MOVE
FileOp.pFrom:='c:\*.*'; //这里改成TListView里的文件
FileOp.pTo:='c:\temp\';
FileOp.fFlags:=FOF_ALLOWUNDO;
SHFileOperation(FileOp);
end;
var
FromF, ToF: file of byte;
Buffer: array[0..4096] of char;
NumRead: integer;
FileLength: longint;begin
AssignFile(FromF, Source);
reset(FromF);
AssignFile(ToF, Destination);
rewrite(ToF);
FileLength := FileSize(FromF);
with ProgressBar1 do
begin
Min := 0;
Max := FileLength;
while FileLength > 0 do
begin
BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF, Buffer[0], NumRead);
Position := Position + NumRead;
end;
CloseFile(FromF);
CloseFile(ToF);
end;
end;
FileOp.pFrom:='c:\*.*'; //这里改成TListView里的文件
我试了一下,如果包含中文则会失败
那就用hellolongbin(一个人(看贴先看错别字)) 的方法试试。极品高手高手高高手呵
555,好痛苦,回答错会被人这样踩。 T_T
如果能捕获该网页的关闭事件也行啊,但问题是能捕获吗?
请高手指教。
不过楼主可以改用SHFileOperationW。
var var FileOp:SHFILEOPSTRUCTW;
begin
......
SHFileOperationW(FileOp);
end;
其中pFrom,pTo是PWideChar的,支持中文,在Xp下可以正常复制。
xxxx + #0 + xxxx + #0#0
好像不行