Delphi:BlockWrite I / O Error 1784

时间:2012-12-07 01:36:52

标签: arrays delphi file

使用以下代码编写

  dest : array of Bytes;

到文件。

  c: integer;
  size: integer;

如果我按字节做Byte:

  filename := ExePath + 'test.txt';
  AssignFile(myfile, filename);
  ReWrite(myfile, 1);
  Write the data array to the file
  for c := 0 to length(dest) - 1 do
     BlockWrite(myfile, dest[c], 1);
  CloseFile(myfile);

一切正常,但在大型阵列上需要很长时间(最大20MB)。

如果我尝试写它@一旦我得到I / O错误1784:

  filename := ExePath + 'test.txt';
  AssignFile(myfile, filename);
  size := length(dest);
  ReWrite(myfile, size);
  BlockWrite(myfile, dest[0], size);
  CloseFile(myfile);

哪里可能有错? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

得到了......

@self:RTFM

BlockWrite(myfile, dest[0], size);

必须是

BlockWrite(myfile, dest[0], 1);

原因大小已经定义为具有重写的数组的大小....

filename := ExePath + 'test.txt';
AssignFile(myfile, filename);
size := length(dest);
ReWrite(myfile, size);
BlockWrite(myfile, dest[0], 1);   <-- 1 "dataset" of length (size) as defined before
CloseFile(myfile);