如何修改文件流,如:我打一个文件,把指针指向100,我想把别的文件流数据(长度为4.8k),复盖指针100以后的4.8k数据,请问如何做呢,修改的文件
var
str:TMemoryStream;
fileok:TMemoryStream;
begin
str:=TMemoryStream.Create;
str.LoadFromFile('c:\55.dat');
fileok:=TMemoryStream.Create;
fileok.LoadFromFile('c:\123.exe');
fileok.Position:=100;
fileok.Write(str,str.size);
fileok.SaveToFile('c:\234.exe');
ShowMessage('Save OK!');
fileok.Free;
STR.Free;
end;
fileok.Write(str,str.size);
//这句有问题,我存取出来的234.exe的文件,长度会变长,并且没有复盖到123.exe指针100以后的数据.请问如何才能复盖123.exe指针100以后的数据.
问题点数:100、回复次数:3Top
1 楼gzmhero(hihihi)回复于 2005-04-04 10:58:10 得分 50
procedure TForm1.Button1Click(Sender: TObject);
var
ff,ts:TFileStream;
begin
ff:=TFilestream.create('test.dat',fmOpenReadWrite);
ts:=Tfilestream.create('test1.dat',fmOpenReadWrite);
ff.Seek(100,sofrombeginning);/////定位test.dat到1024的位置
ts.Seek(0,sofrombeginning);
ff.CopyFrom(ts,ts.Size);///////把test1.dat的数据添加到test.dat的1024位置的后面,
形成的文件test.dat是文件test.dat的100的头部,以及test1.dat的文件体。
ff.free ;
ts.free;
end;Top
2 楼postren(小虫【宝宝出生,真忙】)回复于 2005-04-04 11:02:36 得分 50
var
str:TMemoryStream;
fileok:TMemoryStream;
begin
str:=TMemoryStream.Create;
str.LoadFromFile('c:\55.dat');
fileok:=TMemoryStream.Create;
fileok.LoadFromFile('c:\123.exe');
fileok.Position:=100;
fileok.CopyFrom(str,str.size);
fileok.SaveToFile('c:\234.exe');
ShowMessage('Save OK!');
fileok.Free;
STR.Free;
end;Top
3 楼kangji(尾鱼头)回复于 2005-04-04 12:50:42 得分 0
已经解决了Top




