バイナリー・ファイルを読み書きするには?

解決


老齢アマグラマ  2005-07-19 15:40:25  No: 16430

お忙しい所、申し訳ありません。
Delphi 7でbinary fileのread and writeをしようとしています。
現在は、
var   buffer: array of Byte;
  stream: TFileStream;
  n: Interger;

として、
stream:=TFileStream.Create('Sample.DAT', fmOpenRead); n:=0; while stream.Position < stream.Size do begin
  stream.Read(buffer[n], SizeOf(Byte));
  n:= n+1;
end;
としています。
確かに読み取れますが、異様に時間がかかります。
stream.Read(buffer, stream.Size);
などとすると、全く読み取れません。

どのようにすれば良いでしょうか。ヒントだけでもご教授下さい。


ヒントでピント...分かるかな?  2005-07-19 17:31:15  No: 16431

>Stream.Read(buffer, Stream.Size);
>などとすると、全く読み取れません。

動的配列は暗黙にポインタであることを肝に銘記すべし
  SetLength(buffer, Stream.Size);
  Stream.Read(Pointer(buffer)^, Stream.Size);


老齢アマグラマ  URL  2005-07-20 03:20:40  No: 16432

ヒントでピント様、

的確なご指摘ありがとうございました。だから、SizeOf(buffer)とすると4が戻って来たのですね。本当にありがとうございました。
ついでで申し訳ありませんが、BlockReadとの使い分けはどのようにすれば良いのでしょうか。ご教授下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加