没有办法从文件流中删除一部分数据,除非重写整个文件流。procedure DStreamData(FileName:String; StartPos,EndPos: Integer);
//StartPos: 从此开始“删除”信息,EndPos: 到此结束“删除”信息
//如果输入文件名与输出文件名相同,就等于把源文件的StartPos与EndPos之间的内容删除
var
Ori: TFileStream;
Tmp: TMemoryStream;
begin
try
Ori := TFileStream.Create(FileName, fmOpenRead);
Tmp := TMemoryStream.Create;
Tmp.CopyFrom(Ori, StartPos);
//Tmp从Ori拷贝数据,但在StartPos与EndPos之间不拷,因此形同删除了一段数据
Ori.Seek(EndPos,soFromBeginning);
Tmp.CopyFrom(Ori, Ori.Size-EndPos);
Tmp.SaveToFile(FileName); //在此设置输出文件名
ShowMessage('完成!');
finally
FreeAndNil(Ori);
FreeAndNil(Tmp);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
DStreamData('C:\Test1.Dat',200,300);
end;
//StartPos: 从此开始“删除”信息,EndPos: 到此结束“删除”信息
//如果输入文件名与输出文件名相同,就等于把源文件的StartPos与EndPos之间的内容删除
var
Ori: TFileStream;
Tmp: TMemoryStream;
begin
try
Ori := TFileStream.Create(FileName, fmOpenRead);
Tmp := TMemoryStream.Create;
Tmp.CopyFrom(Ori, StartPos);
//Tmp从Ori拷贝数据,但在StartPos与EndPos之间不拷,因此形同删除了一段数据
Ori.Seek(EndPos,soFromBeginning);
Tmp.CopyFrom(Ori, Ori.Size-EndPos);
Tmp.SaveToFile(FileName); //在此设置输出文件名
ShowMessage('完成!');
finally
FreeAndNil(Ori);
FreeAndNil(Tmp);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
DStreamData('C:\Test1.Dat',200,300);
end;
解决方案 »
- 关于delphi下操作线程、处理并发
- 请问在3维场景中如何实现2维图像到3维模型的渐变?
- 简单问题
- 在WIN XP中不能第二次激活并显示窗口?
- 原来可以正确执行,现在不正常地定义参数对象.提供了不一致或不完整的信息
- 急:关于IntraWeb中Session的问题,高手请进!!!来者有分
- delphi6到底能不能用delphi5的程序?
- 我在程序中启动了另外一个进程,是用createprocess来启动的,遇到这样的一个问题,请高手帮忙解决
- 介绍几本面向对象纯理论方面的书~!谢谢了~∩_∩~
- 如何使在olecontainer中显示的WORD文档不能拷贝??
- 如何在QuickReport中创建动态的表格
- 打开汉字命名的VF表的时候报错:Could not find launguage driver.怎么解决?
执行到这一句Tmp.SaveToFile(FileName);会报错(无法建立文件)