var
str:TMemoryStream;
fileok:TMemoryStream;
beginstr:=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以后的数据.

解决方案 »

  1.   

    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;
      

  2.   

    var
    str:TMemoryStream;
    fileok:TMemoryStream;
    beginstr:=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;