使用copyfile复制文件怎么知道复制文件的进度??(100分)

  • 主题发起人 主题发起人 bbstar
  • 开始时间 开始时间
B

bbstar

Unregistered / Unconfirmed
GUEST, unregistred user!
急,各位大虾帮帮忙!
 
使用copyfile是不可能知道拷贝的进度的
 
思路:
用循环语句一直测试目标文件是否存在. 懂了吧.
 
关注,呵呵。

To WRainbug!: 人家要的是进度啊~~~ , 判断完成是很Easy的事情。 关键是,
如何判断完成了 xx% ?
 
想要显示进度,用SHFileOperation好了
FileCopy是不会有的。
 
to PFans 用SHFileOperation怎么知道复制的进度?
 
继承TFileStream,覆盖Write() Read()不知可不可以,我用FTP发送文件时就是这样读取
当前值。
 
Borland/Delphi6/Demos/Doc/Filmanex下有一个例子
其中 FmxUtils 单元有一个
procedure CopyFile(const FileName, DestName: string);
修改其中的
repeat
BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); { read chunk }
if BytesCopied > 0 then { if we read anything... }
FileWrite(Dest, CopyBuffer^, BytesCopied); { ...write chunk }
until BytesCopied < ChunkSize; { until we run out of chunks }
BytesCopied为每次Copy的数量
API的CopyFile应该不能知道进度
 
CopyFile 不能知道进度
CopyFileEx 有回调函数知道进度,可惜他只支持 nt/2000 ,不支持95/98
SHFileOperation 可以显示进度条,他的进度条就是在windows里面拉动文件显示的那个进度窗口,可惜
不能返回进度数据让你自己显示自己的进度窗口
所以,你自己写read、write,自己拷贝文件,就什么功能都有了
 
用文件流来READ WRITE,很容易做出界面的
 
我现在想知道的是SHFileOperation怎么知道进度,知道的有重分
 
还有如何知道对方机器有多少个驱动器?不要服务端!
 
怎么没有人知道呀??
 
贴一段。。
procedure CopyFile(const Sour, Dest: string);
var
FileOp: TSHFileOpStruct;
begin
with FileOp do
begin
Wnd := 0;
wFunc := FO_Copy;//更换此参数可实现拷贝和更名
pFrom := PChar(Sour);
pTo := PChar(Dest);
fFlags := FOF_NoConfirmation;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil
end;
SHFileOperation(FileOp);
end;

 
用流式文件读取,写入,不知道是否可以,可以试试[:(]
 
在局域网下以上代码能复制吗?
这个问题本人迫切需要解决,多谢!!!
 
局域网可以使用SHFileOperation的。
 
楼上大哥您好!局域网使用SHFileOperation我试了多次均未成功。
文件地址必须是TCP/IP的绝对地址,我试了,老是提示不能读取源文件。
您能提供源码吗?多谢啦!!!
 
用CopyFileEx 就可以了,具体的看帮助文件,很简单的
 
后退
顶部