0

用下面的代码我写了一个

  dest : array of Bytes;

到一个文件。

  c: integer;
  size: integer;

如果我逐字节做:

  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);

可能错在哪里?提前致谢。

4

1 回答 1

3

知道了...

@我自己:RTFM

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

一定是

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

因为 size 已经被定义为数组的大小,并带有 rewrite....

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);
于 2012-12-07T01:43:44.227 回答