下面是我测试文件流分次拷贝数据,但是拷过去的数据打开时说文件损坏,请教大家,请不要跟我建议用Copyfrom,就是要分段复制!
var scr,new:TFilestream;
    p:pointer;
    size:integer;
begin
    scr:=TFilestream.Create('d:\delphi.rar',fmopenread);
    size:=scr.Size;
    new:=Tfilestream.Create('e:\delphi.rar',fmcreate or fmopenwrite);
    try
        while size>0  do
        begin
            if size>2000 then
            begin
                scr.Read(p^,2000);
                new.Write(p^,2000);
                size:=size-2000;
            end
            else
            begin
                scr.Read(p^,size);
                new.Write(p^,size);
                size:=0;
            end;        end;    finally
        scr.Free;
        new.Free;
    end;end;

解决方案 »

  1.   

    需要一个合法的缓冲区。var
        scr,new:TFilestream;
        p: array [0..2000] of byte;
        size:integer;
    begin
        scr:=TFilestream.Create('d:\delphi.rar',fmopenread);
        size:=scr.Size;
        scr.Position := 0;
        new:=Tfilestream.Create('e:\delphi.rar',fmcreate or fmopenwrite);
        new.Position := 0;    try
            while size>0  do
            begin
                if size>2000 then 
                begin
                    scr.Read(p,2000);
                    new.Write(p,2000);
                    size:=size-2000;
                end
                else 
                begin
                    scr.Read(p,size);
                    new.Write(p,size);
                    size:=0;
                end;         end;    finally
            scr.Free;
            new.Free; 
        end;end;