我想把d:\1.gif文件用流的方式写到e:\1.gif,代码如下,为什么生成的文件跟原来的不一样:
var
  sf,sf1:TStream;
  buffer: array[0..1023] of byte ;
  i,C,c1,len :integer;
begin
  len := 1024;  //每次读写1024长度
  try
     sf:=TFileStream.Create('d:\1.gif',fmOpenRead);
     sf1:=TFileStream.Create('e:\1.gif',fmCreate);
     c := sf.Size;
     c1 := c;
     c := c1 div len;
     i := c1 mod len;
     
     if i > 0 then c := c + 1;     for i := 1 to c do
     begin
       if i = c then
       begin
         sf.Seek(((i - 1) * len),soFromEnd);
         sf.Read(buffer,c1 - (i - 1) * len);
         sf1.Write(Buffer,c1 - (i - 1) * len);
       end
       else
       begin
         sf.Seek((i - 1 * len),soFromEnd);
         sf.Read(buffer,len);
         sf1.Write(Buffer,len);
       end;
     end;
  finally
     sf1.Free;
     sf1 := nil;
     sf.free;
     sf:=nil;
  end;