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

原因サイズは、書き換えを使用して配列のサイズにすでに定義されています。

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 に答える