请教:在调用函数BlockRead()的时候,老是出现 I/O error 998的错误,通常是什么原因?

解决方案 »

  1.   

    procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);没有读取到Count个字节并且你没有指定AmtTransferred参数。如果你指定了AmtTransferred就不会有问题了。如
    var
      AmtTransferred: Integer;
    begin
      BlockRead(F, Buf, Count, AmtTransferred);而不是:
      BlockRead(F, Buf, Count);
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    可是我已经设了参数AmtTransferres阿
    这样吧,我把我的代码贴出来,看看有什么问题?
    procedure TForm1.Button3Click(Sender: TObject);
    var
    source,target:file;
    numread,numwrite:integer;
    buffer:array[1..2048] of byte;
    begin
    AssignFile(source,edit1.text);
    reset(source);
    AssignFile(target,edit2.text);
    rewrite(target);
    repeat
    begin
    BlockRead(source,buffer,sizeof(buffer),numread);
    BlockWrite(target,buffer,numRead,numWrite);
    end;
    until (numread=0) or (numread<>numwrite);
    closefile(source);
    closefile(target);
    end;
      

  3.   

    reset(source,1);
       rewrite(target,1);