没有办法从文件流中删除一部分数据,除非重写整个文件流。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;
解决方案 »
- 随机数问题
- Mapx中新增永久图层,如何给图层数据集填充内容?
- 想自己做个组件,label加image,怎么搞
- 怎样输入“日期+时间”型控件?
- 系统在XP SP2下报错,请高手指教!!!
- WebServices中,JAVA服务端的DataHandler类如何与Delphi客户端对应,哪个类或结构?
- 关于截获键盘中文输入的问题
- 如何取得TChart控件中Series点与点之间的距离
- 用过fastreport的朋友请进。。。
- 需要参数‘@kssj’,但未提供该参数“
- 如何在QuickReport中创建动态的表格
- 打开汉字命名的VF表的时候报错:Could not find launguage driver.怎么解决?
执行到这一句Tmp.SaveToFile(FileName);会报错(无法建立文件)