{
Var
Target,Source:TFileStream;
}Target.Seek(0,soFromEnd);//往尾部添加资源
Target.CopyFrom(Source,0);
就是把Source的全部加到Target的尾部
Source要是很大的话就要费很多时间,所以我想用repeat替换上面的两句,一部分一部分的读,在repeat期间控制进度条,请大家帮忙,谢谢!
Var
Target,Source:TFileStream;
}Target.Seek(0,soFromEnd);//往尾部添加资源
Target.CopyFrom(Source,0);
就是把Source的全部加到Target的尾部
Source要是很大的话就要费很多时间,所以我想用repeat替换上面的两句,一部分一部分的读,在repeat期间控制进度条,请大家帮忙,谢谢!
解决方案 »
- 请问如何在程序里动态修改access数据库的字段值
- 哪里有FOR XP 的MDAC2.8 下载??MICROSOFT没找到:(
- 百分求刘艺《delphi面向对象编程思想》电子版。
- 头要我使用usb端口的读卡器,PC/SC规范开发一个读取卡片数据的程序,没有头绪呀,各位XDJM帮忙呀!
- 服务器之间Web通信问题
- 关于MDI窗体的登陆窗口的显示问题
- 请教各位高手如何在窗体上动态生成控件?
- 请问:IDPOP3控件如何得知某个邮箱的新邮件数?
- 我自己用DELPHI做了个OICQ炸弹,不过......
- 操作Excel的问题 未设置对象变量或With block变量
- tadoquery.refresh也出錯,不會吧!!!
- 请教:模态窗口关闭而不释放,应该如何实现呢?
帮你顶
建议你使用内存镜像文件处理大文件的操作
参考如下代码:var
vFileDest: THandle;
vFileSource: THandle;
vSizeDest: Integer;
vSizeSource: Integer;
vMappingDest: THandle;
vMappingSource: THandle;
vDataDest: Pointer;
vDataSource: Pointer;
begin
vFileDest := _lopen('c:\temp\temp.txt', OF_READWRITE or OF_SHARE_DENY_NONE);
vFileSource := _lopen('c:\temp\temp2.txt', OF_READ or OF_SHARE_DENY_NONE); vSizeDest := GetFileSize(vFileDest, nil);
vSizeSource := GetFileSize(vFileSource, nil);
vMappingDest := CreateFileMapping(vFileDest, nil, PAGE_READWRITE, 0,
vSizeDest + vSizeSource, '~MyMappingDest');
vMappingSource := CreateFileMapping(vFileSource, nil, PAGE_READONLY, 0,
vSizeSource, '~MyMappingSource');
vDataDest := MapViewOfFile(vMappingDest, FILE_MAP_WRITE, 0, 0,
vSizeDest + vSizeSource);
vDataSource := MapViewOfFile(vMappingSource, FILE_MAP_READ, 0, 0,
vSizeSource);
Move(vDataSource^, Pointer(Integer(vDataDest) + vSizeDest)^, vSizeSource); UnmapViewOfFile(vDataDest);
UnmapViewOfFile(vDataSource);
CloseHandle(vMappingDest);
CloseHandle(vMappingSource);
CloseHandle(vFileDest);
CloseHandle(vFileSource);
end;
Move(vDataSource^, Pointer(Integer(vDataDest) + vSizeDest)^, vSizeSource);
如果大了,还得分段
Buf: array [0..4095] of Byte;
iCount: Integer;
Target.Seek(0,soFromEnd);//往尾部添加资源
iCount := Source.Read(Buf, SizeOf(Buf));
while iCount > 0 do
begin
Target.Write(Buf, iCount);
//进度条
iCount := Source.Read(Buf, SizeOf(Buf));
end;