BlockWrite I/O错误1784 [英] BlockWrite I/O Error 1784

查看:68
本文介绍了BlockWrite I/O错误1784的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于以下代码中的块写入,我收到 I/O错误1784 会覆盖文件3次.

I get an I/O Error 1784 due to blockwrite in the following code which overwrites 3 times a file.

我认为I/O错误1784表示ERROR_INVALID_USER_BUFFER.

I presume I/O Error 1784 means ERROR_INVALID_USER_BUFFER.

我不知道为什么.该错误有时会出现,而不是在每次运行时都出现...

I don't know why. The error appears sometimes, not at each run...

您能帮我吗?

   procedure overwrite_files_3_times(iPath : string); 
    var
      numwritten : integer;
      iFileSize, iPosition : int64;
      InFile : File of byte;
      ipBufBlock : pTBUFFER;
      k : integer;

    begin
      if not FileExists(iPath) then
        exit;   


      FileMode := fmOpenRead or fmOpenWrite or fmShareDenyNone;      

      AssignFile(InFile, iPath);
      Reset(InFile);


      iFileSize := getfilesize2(iPath);  // retrieve the filesize
      iPosition := 0;



          // 3 overwrites
          for k:= 0 to 3-1 do
            begin
              Seek(InFile, 0);
              iPosition := 0;
              ///////////////////
              // on écrit
              while iPosition + sizeOf(TBuffer) < iFileSize do
                begin
                  BlockWrite(InFile,ipBufBlock^,sizeOf(TBuffer),numwritten);               
                  iPosition := iPosition + sizeOf(TBuffer);                                
                end;

              // the end
              if iPosition <= iFileSize -1 then
                begin
                 BlockWrite(InFile,ipBufBlock^,iFileSize-iPosition,numwritten);    //-->> generate I/O Error 1784       
                end;                                                                      
            end;


      ////////////////
      CloseFile(InFile);
end;

推荐答案

假定pTBUFFER是指向TBUFFER的指针,那么ipBufBlock在哪里初始化?如果不是,ipBufBlock可能指向任何内容-甚至是无法读取并因此无法写入文件的内存.

Assuming pTBUFFER is a pointer to TBUFFER, where is ipBufBlock initialized? If it isn't, ipBufBlock may point to anything - even memory that cannot be read and thus not be written to the file.

这篇关于BlockWrite I/O错误1784的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆