Delphi でバイナリ ファイルを非テキスト モードで開く方法を教えてください。C関数のようにfopen(filename,"rb")
質問する
9478 次
2 に答える
15
いくつかのオプションがあります。
1. ファイル ストリームを使用する
var
Stream: TFileStream;
Value: Integer;
....
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
Stream.ReadBuffer(Value, SizeOf(Value));//read a 4 byte integer
finally
Stream.Free;
end;
2.リーダーを使用する
上記のアプローチを a と組み合わせてTBinaryReader
、値の読み取りをより簡単にします。
var
Stream: TFileStream;
Reader: TBinaryReader;
Value: Integer;
....
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
Reader := TBinaryReader.Create(Stream);
try
Value := Reader.ReadInteger;
finally
Reader.Free;
end;
finally
Stream.Free;
end;
リーダー クラスには、他のデータ型を読み取るための関数が多数あります。バイナリ ライターを使用すると、逆方向に進むことができます。
3. 古いスタイルの Pascal I/O
タイプの変数を宣言し、 、 などをFile
使用してファイルから読み取ることができます。このアプローチは本当にお勧めしません。最新のコードとライブラリは、ほぼ常にストリームのイディオムを好みます。同じことを自分で行うことで、コードを他のライブラリに合わせやすくなります。AssignFile
BlockRead
于 2012-11-27T11:31:25.000 に答える
3
さまざまなオプションがあります。そのうちの 2 つは次のとおりです。
あなたが指摘したC関数のように、古い学校のアプローチを使用してください:
var
F: File;
begin
AssignFile(F, 'c:\some\path\to\file');
ReSet(F);
try
//work with the file
finally
CloseFile(F);
end
end;
ファイルに基づいて TFileStream を作成するには、より新しいアプローチを使用します。
var
F: TFileStream;
begin
F := TFileStream.Create('c:\some\path\to\file', fmOpenRead);
try
//work with the file
finally
F.Free;
end;
于 2012-11-27T11:37:55.023 に答える