各位大侠,怎样把一段数据加入到一个文件的前面(总是加在后面,不知为什?帮帮忙,我试了很久都不行) (30分)

  • 主题发起人 主题发起人 jbas
  • 开始时间 开始时间
J

jbas

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button31Click(Sender: TObject);
var
stream3:tfilestream;
stream4:tfilestream;
myfilesize:integer;
my4:integer;
ls:Integer;
begin
stream3:=tfilestream.Create('d:/project2.exe',fmopenread);
stream4:=tfilestream.Create('d:/stream1.dat',fmopenwrite);
myfileSize:=stream3.Size+sizeof(myfilesize);
my4:=stream4.Size;
stream4.seek(0,0);
stream4.readbuffer(ls,sizeof(ls));//把steam4的原内容读入ls。
stream4.seek(0,0);
stream4.CopyFrom(stream3,0);//把stream3的内容读入stream4的开始;
stream4.WriteBuffer(ls,sizeof(ls));//把ls(即stream4的原内容)写入stream4的末尾;
stream3.Free;
stream4.Free;
end;
不知我的思路对吗?但总不行,不是写入在末尾,就是没写入。请高手帮忙了!
 
看了一 下,好像是这一句
STREAM4。READBUFFER(LS,SIZEOF(LS));
再看看吧,流的读写在以往的帖子里很多,搜一下 !
 
大侠,我搜了(不然我可不给这30分),都是写入末尾,我试改了很多地方,都不行。
帮帮忙了。[:(][:(]
 
procedure TForm1.Button1Click(Sender: TObject);
var
stream3,stream4:tfilestream;
tempstream:TMemoryStream;
begin
stream3:=tfilestream.Create('d:/project2.exe',fmopenread);
stream4:=tfilestream.Create('d:/stream1.dat',fmOpenRead);
TempStream := TMemoryStream.Create;
stream3.Seek(0,0);
stream4.seek(0,0);
tempstream.CopyFrom(stream3,0);
tempstream.CopyFrom(stream4,0);
stream3.Free;
stream4.Free;
tempstream.SaveToFile('d:/stream1.dat');
TempStream.Free;
ShowMessage('OK');
end;
 
谢谢小人物大侠帮了,但我想单用filestream实现,不知可以吗?(用来学习流的使用)
能写入末尾,但前面就不行了。(write 与 writebuff 有区别吗?)能再帮忙吗,万分感谢!
 
加在前面肯定需要一个临时的“流”,不然拷贝过来的数据会把前面的数据覆盖掉,
 
谢谢关注。但象我上面的方法怎么不行?
var
ls:integer;
stream4.readbuffer(ls,sizeof(ls));//把steam4的原内容读入ls。
stream4.seek(0,0);
stream4.CopyFrom(stream3,0);//把stream3的内容读入stream4的开始;
stream4.WriteBuffer(ls,sizeof(ls));//把ls(即stream4的原内容)写入stream4的末尾;
大侠能再帮忙吗?谢谢了!能帮忙说一下read和readbuff的区别吗?
 
谢谢了!要是行希望告之。可没分了。[:D]
 
后退
顶部