在 Delphi 中如何以非文本模式打开二进制文件?
像 C 函数 fopen(filename,"rb")

最佳答案

有几个选项。

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. 使用阅读器

您可以将上述方法与 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;

reader 类有很多函数来读取其他数据类型。您可以使用二进制编写器朝相反的方向发展。

3. 旧式 Pascal I/O

您可以声明一个 File 类型的变量并使用 AssignFileBlockRead 等从文件中读取。我真的不推荐这种方法。现代代码和库几乎总是更喜欢流习语,通过自己做同样的事情,你会让你的代码更容易适应其他库。

关于Delphi读取非文本文件(二进制),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13583015/

10-11 22:07
查看更多