懂获得文件流的高手请进来拿分

nuaawenlin 2003-04-29 02:55:07
在使用CopyFile()的时候,我想获得正在拷贝的文件流,以便使用进度条来演示拷贝。就想电脑中要拷贝时一样,不知道使用什么函数,我试过FileString(),可是DELphi不承认,不知道还有没有别的函数。
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
foreveryday007 2003-04-29
  • 打赏
  • 举报
回复
同意楼上,最好用文件流來實現,也簡單
李_军 2003-04-29
  • 打赏
  • 举报
回复
procedure CopyStream;
var
RStream: TFileStream;
WStream: TFileStream;
sFileName,WFileName: String;
LeftSize,CopySize: Integer;
begin
try
sFileName := frmMain.Edit1.Text;
if Trim(frmMain.Edit1.Text) = '' then
begin
Application.MessageBox('要拷贝的文件不能为空!','提示!',0);
Exit;
end;
WFileName := frmMain.Edit2.Text;
RStream := TFileStream.Create(sFileName,fmOpenRead);
// .........//
if FileExists(frmMain.Edit2.Text) then
begin
WStream := TFileStream.Create(WFileName,fmOpenReadWrite);
WStream.Position := WStream.Size;
RStream.Position := WStream.Size;
LeftSize := RStream.Size-WStream.Size;
CopySize := WStream.Size;
end
else
begin
WStream := TFileStream.Create(WFileName,fmCreate);
RStream.Position := 0;
LeftSize := RStream.Size;
CopySize := 0;
end;
//................//
frmMain.Gauge1.MaxValue := LeftSize div 1024;
frmMain.Gauge1.MinValue := 0;
frmMain.Gauge1.Progress := 0;
while LeftSize>0 do
begin
if LeftSize <1024 then
begin
WStream.CopyFrom(RStream,LeftSize);
CopySize := CopySize+LeftSize;
LeftSize := 0;
Gauge1.Progress := Gauge1.Progress+1;
end
else
begin
WStream.CopyFrom(RStream,1024);
CopySize := CopySize+1024;
LeftSize := LeftSize-1024;
Gauge1.Progress := Gauge1.Progress+1;
end;
RStream.Position := CopySize;
end;
finally
FreeAndNil(RStream);
FreeAndNil(WStream);
end;
end;
xiaoyuer0851 2003-04-29
  • 打赏
  • 举报
回复
最好用文件流结合内存流来解决问题!~~~

tpmao 2003-04-29
  • 打赏
  • 举报
回复
同意楼上!!!同意楼上!!!同意楼上!!!
5116888 2003-04-29
  • 打赏
  • 举报
回复
用TMemoryStream;
var
ams:TMemoryStream;
begin
ams:=TMemoryStream.create();
ams:=LoadFromFile(你的文件名);
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧