谁给我这样的程序(读RAR文件,然后新建一个RAR文件,并将读出的内容存在其中)
RAR文件的大小要大于128K
要求分成两次读写,
谢谢
var
  p,p1: pointer;
  pch: PChar;
  s: String;
  buf1,buf2:TMemoryStream;
  fil1: File;
  i: Integer;
begin
  buf1 :=TMemoryStream.Create;
  buf1.LoadFromFile('e:\jj.rar');
  buf1.Seek(0,0);
  GetMem(p, buf1.size);  i := buf1.Read(p^,buf1.Size);
  showmessage(inttostr(i));
  AssignFile(fil1,'e:\jj2.rar');
  rewrite(fil1);
  write(fil1, p^);
end;
上面的程序对于小于128KB的文件是可以的,对于大的就不行,
所以我要求分成两段读写,但会有问题,
想知道问题的兄弟试试就知道了

解决方案 »

  1.   

    buf1 :=TMemoryStream.Create;
      buf1.LoadFromFile('G:\工作\Delphi精要.rar');
      buf1.Seek(0,0);
      buf1.SaveToFile('G:\工作\Delphi精要AAA.rar');
      buf1.Free;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    buf1 :=TMemoryStream.Create;
      buf1.LoadFromFile('G:\工作\Delphi精要.rar');
      buf1.Seek(0,0);
      buf1.SaveToFile('G:\工作\Delphi精要AAA.rar');
      buf1.Free;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  3.   

    或者将你的:
    rewrite(fil1);
     改为:
    rewrite(fil1, i);
    因为rewrite缺省缓冲区大小是128字节。
      
    ————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————