お忙しい所、申し訳ありません。
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);
などとすると、全く読み取れません。
どのようにすれば良いでしょうか。ヒントだけでもご教授下さい。
>Stream.Read(buffer, Stream.Size);
>などとすると、全く読み取れません。
動的配列は暗黙にポインタであることを肝に銘記すべし
SetLength(buffer, Stream.Size);
Stream.Read(Pointer(buffer)^, Stream.Size);
ヒントでピント様、
的確なご指摘ありがとうございました。だから、SizeOf(buffer)とすると4が戻って来たのですね。本当にありがとうございました。
ついでで申し訳ありませんが、BlockReadとの使い分けはどのようにすれば良いのでしょうか。ご教授下さい。
ツイート | ![]() |